• 行转列,报表统计时,同一Id不同状态下的数据


    //把数据放到Dictionary中
                DataTable NewTable = new DataTable();
                NewTable.Columns.Add("name", typeof(string));
                NewTable.Columns.Add("company", typeof(string));
                NewTable.Columns.Add("fgongkai", typeof(string));
                NewTable.Columns.Add("finvite", typeof(string));
                NewTable.Columns.Add("fmeeting", typeof(string));
                NewTable.Columns.Add("ftotal", typeof(string));
                NewTable.Columns.Add("sgongkai", typeof(string));
                NewTable.Columns.Add("sinvite", typeof(string));
                NewTable.Columns.Add("smeeting", typeof(string));
                NewTable.Columns.Add("stotal", typeof(string));
                NewTable.Columns.Add("total", typeof(string));
                Dictionary<string, DataRow> DataList = new Dictionary<string, DataRow>();
                DataRow Newdr;
                foreach (DataRow dr in dt.Rows)
                {
                    if (!DataList.ContainsKey(dr["ExpertId"].ToString().Trim()))
                    {
                        Newdr = NewTable.NewRow();
                        Newdr["name"] = dr["ExpertName"];
                        Newdr["company"] = dr["CompanyName"];
                        if (dr["InMeeting"].ToString().Trim() == "1")
                        {
                            Newdr["fgongkai"] = DataConvert.ToInt(dr["gongkai"]);
                            Newdr["finvite"] = DataConvert.ToInt(dr["invite"]);
                            Newdr["fmeeting"] = DataConvert.ToInt(dr["meeting"]);
                            Newdr["ftotal"] = DataConvert.ToInt(dr["gongkai"]) + DataConvert.ToInt(dr["invite"]) + DataConvert.ToInt(dr["meeting"]);
                            Newdr["total"] = Newdr["ftotal"];
                        }
                        else
                        {
                            Newdr["sgongkai"] = DataConvert.ToInt(dr["gongkai"]);
                            Newdr["sinvite"] = DataConvert.ToInt(dr["invite"]);
                            Newdr["smeeting"] = DataConvert.ToInt(dr["meeting"]);
                            Newdr["stotal"] = DataConvert.ToInt(dr["gongkai"]) + DataConvert.ToInt(dr["invite"]) + DataConvert.ToInt(dr["meeting"]);
                            Newdr["total"] = Newdr["stotal"];
                        }
                        DataList.Add(dr["ExpertId"].ToString(), Newdr);
                    }
                    else
                    {
                        Newdr = DataList[dr["ExpertId"].ToString()];
                        if (dr["InMeeting"].ToString().Trim() == "1")
                        {
                            DataList[dr["ExpertId"].ToString()]["fgongkai"] = DataConvert.ToInt(dr["gongkai"]);
                            DataList[dr["ExpertId"].ToString()]["finvite"] = DataConvert.ToInt(dr["invite"]);
                            DataList[dr["ExpertId"].ToString()]["fmeeting"] = DataConvert.ToInt(dr["meeting"]);
                            DataList[dr["ExpertId"].ToString()]["ftotal"] = DataConvert.ToInt(dr["gongkai"]) + DataConvert.ToInt(dr["invite"]) + DataConvert.ToInt(dr["meeting"]);
                        }
                        else
                        {
                            DataList[dr["ExpertId"].ToString()]["sgongkai"] = DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["sgongkai"]) + DataConvert.ToInt(dr["gongkai"]);
                            DataList[dr["ExpertId"].ToString()]["sinvite"] = DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["sinvite"]) + DataConvert.ToInt(dr["invite"]);
                            DataList[dr["ExpertId"].ToString()]["smeeting"] = DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["smeeting"]) + DataConvert.ToInt(dr["meeting"]);
                            DataList[dr["ExpertId"].ToString()]["stotal"] = DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["stotal"]) + DataConvert.ToInt(dr["gongkai"]) + DataConvert.ToInt(dr["invite"]) + DataConvert.ToInt(dr["meeting"]);
                        }
                        DataList[dr["ExpertId"].ToString()]["total"] = DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["ftotal"]) + DataConvert.ToInt(DataList[dr["ExpertId"].ToString()]["stotal"]);
                    }
                }
    
                DataTable NewTable2 = new DataTable();
                NewTable2 = NewTable.Clone();//复制NewTable表结构
                foreach (DataRow dr in DataList.Values)//将DataList中的数据放到NewTable2中
                {
                    NewTable2.Rows.Add(dr.ItemArray);
                }
    
                DataView dv = NewTable2.DefaultView;
                dv.Sort = " total desc";//根据total排序
                DataTable dt1 = dv.ToTable();
    
                int row = 1;
                foreach (DataRow dr in dt1.Rows)
                {
                    html.Append(@" 
                                <tr>
                                    <td class=""gray"" align=""center"" valign=""middle"">" + row + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + dr["name"] + @"</td>
                                    <td align=""left"" valign=""middle"" style=""background: #D6F1FC"">" + dr["company"] + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["fgongkai"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["finvite"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["fmeeting"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["ftotal"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["sgongkai"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["sinvite"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["smeeting"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["stotal"]) + @"</td>
                                    <td align=""center"" valign=""middle"" style=""background: #D6F1FC"">" + DataConvert.ToInt(dr["total"]) + @"</td>
                                </tr>");
                    row++;
                }
  • 相关阅读:
    简单所以不要忽视,关于 和 程序员应了解的实际应用
    即使用ADO.NET,也要轻量级动态生成更新SQL,比Ormlite性能更高
    即使用ADO.NET,也要轻量级实体映射,比Dapper和Ormlite均快
    如何在前端实现语义缩放(第一步)
    react教程 — 性能优化
    react教程 — 组件
    react教程 — redux
    create-react-app 创建项目 及 配置
    CSS 预处理器
    react 和 vue 对比
  • 原文地址:https://www.cnblogs.com/yueyuepeng/p/5614364.html
Copyright © 2020-2023  润新知