zoukankan      html  css  js  c++  java
  • 通过DataTable 的列Expression实现 SUM Group by 功能

     DataTable dtData = new DataTable();

                dtData.Columns.Add("deptID");
                dtData.Columns.Add("DateFlag");

                DataColumn dc = new DataColumn();
                dc.ColumnName = "value1";
                dc.DataType = typeof(decimal);
                dtData.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "value2";
                dc.DataType = typeof(decimal);
                dtData.Columns.Add(dc);


                DataRow dr;
                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0901";
                dr[2] = "1000";
                dr[3] = "10";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0902";
                dr[2] = "145";
                dr[3] = "15";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0903";
                dr[2] = "1456";
                dr[3] = "63";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0904";
                dr[2] = "146";
                dr[3] = "44";

                dtData.Rows.Add(dr);
                //////////////////////////
                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0901";
                dr[2] = "450";
                dr[3] = "67";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0902";
                dr[2] = "1335";
                dr[3] = "145";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0903";
                dr[2] = "1126";
                dr[3] = "43";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "1";
                dr[1] = "0904";
                dr[2] = "146";
                dr[3] = "424";

                dtData.Rows.Add(dr);

                /////////////////////////////////////
                dr = dtData.NewRow();
                dr[0] = "2";
                dr[1] = "0901";
                dr[2] = "1146";
                dr[3] = "4124";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "2";
                dr[1] = "0902";
                dr[2] = "116";
                dr[3] = "414";

                dtData.Rows.Add(dr);

                dr = dtData.NewRow();
                dr[0] = "2";
                dr[1] = "0903";
                dr[2] = "1124";
                dr[3] = "416";

                dtData.Rows.Add(dr);
                ///////////////////////////////////////////

                DataTable dt1 = new DataTable();
                dt1.Columns.Add("deptID");
                dt1.Columns.Add("DateFlag");
                dc = new DataColumn();
                dc.ColumnName = "value";
                dc.DataType = typeof(decimal);
                dt1.Columns.Add(dc);


                dr = dt1.NewRow();
                dr[0] = "1";
                dr[1] = "0901";

                dt1.Rows.Add(dr);


                dr = dt1.NewRow();
                dr[0] = "1";
                dr[1] = "0902";
                dt1.Rows.Add(dr);
                dr = dt1.NewRow();
                dr[0] = "1";
                dr[1] = "0903";
                dt1.Rows.Add(dr);
                dr = dt1.NewRow();
                dr[0] = "1";
                dr[1] = "0904";
                dt1.Rows.Add(dr);

                dr = dt1.NewRow();
                dr[0] = "2";
                dr[1] = "0901";
                dt1.Rows.Add(dr);
                dr = dt1.NewRow();
                dr[0] = "2";
                dr[1] = "0902";
                dt1.Rows.Add(dr);
                dr = dt1.NewRow();
                dr[0] = "2";
                dr[1] = "0903";
                dt1.Rows.Add(dr);
                dr = dt1.NewRow();
                dr[0] = "2";
                dr[1] = "0904";
                dt1.Rows.Add(dr);
                //////////////////////////////////

     
                


                DataSet DataSet1 = new DataSet();
                DataSet1.Tables.Add(dtData);
                DataSet1.Tables.Add(dt1);
               

            

                DataColumn[] parent = new DataColumn[2];
                parent[0] = dt1.Columns["deptID"];
                parent[1] = dt1.Columns["DateFlag"];

                DataColumn[] child = new DataColumn[2];
                child[0] = dtData.Columns["deptID"];
                child[1] = dtData.Columns["DateFlag"];



                DataRelation deptDateFlagRel = new DataRelation("deptDateFlagRel", parent, child);
             
                DataSet1.Relations.Add(deptDateFlagRel);

                dt1.Columns[2].Expression = "Sum(Child.Value1)";

    此时, dt1的Column[2]里面的数据就是根据前面的deptID 和dateFlag合计的dtData的值了.

    具体细节请查询MSDN 的DataRelation 和Expression 的例子和说明.
  • 相关阅读:
    Serialize and Deserialize Binary Tree
    sliding window substring problem汇总贴
    10. Regular Expression Matching
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第七章 链接
    程序员如何写一份合格的简历?(附简历模版)
    9个提高代码运行效率的小技巧你知道几个?
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第六章 存储器层次结构
    24张图7000字详解计算机中的高速缓存
    《深入理解计算机系统》(CSAPP)实验四 —— Attack Lab
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能
  • 原文地址:https://www.cnblogs.com/lmarsy/p/1559683.html
Copyright © 2011-2022 走看看