DataTable分组归类

我们在做项目的时候,经常需要根据表或DataTable中某些字段来归类,为此就写出以下方法,帮组需要的人。

#region 对DataTable进行分组 + public void GroupDataRows(IEnumerable<DataRow> source, List<DataTable> destination, string[] groupByFields, int fieldIndex, DataTable schema)
        /// <summary>
        /// 对DataTable进行分组
        /// </summary>
        /// <param name="source">要分组DataTable的Row集合</param>
        /// <param name="destination">分组之后的数据</param>
        /// <param name="groupByFields">分组字段</param>
        /// <param name="fieldIndex">字段索引(从什么字段开始)</param>
        /// <param name="schema">要分组DataTable</param>
        public void GroupDataRows(IEnumerable<DataRow> source, List<DataTable> destination, string[] groupByFields, int fieldIndex, DataTable schema)
        {
            if (fieldIndex >= groupByFields.Length || fieldIndex < 0)
            {
                DataTable dt = schema.Clone();
                foreach (DataRow row in source)
                {
                    DataRow dr = dt.NewRow();
                    dr.ItemArray = row.ItemArray;
                    dt.Rows.Add(dr);
                }
                destination.Add(dt);
                return;
            }

            var results = source.GroupBy(o => o[groupByFields[fieldIndex]]);
            foreach (var rows in results)
            {
                GroupDataRows(rows, destination, groupByFields, fieldIndex + 1, schema);
            }

            fieldIndex++;
        }
        #endregion

  

时间: 2024-08-08 18:07:35

DataTable分组归类的相关文章

DataTable分组求和【UP,UP,UP】

来来来,大家注意了,DataTable分组求和的简单方式 '定义一个临时变量,用于判断某个分组是否已经求过和dim temp=""'求和的值dim sumValue'循环DataTablefor each dr in 网格部件1.DataTable.Rows        '根据长度判当前这条数据所属的分组是否已经求过和(在分组名称前后加上“|”,是为了避免:“是”“不是”这样的分组,这养的分组不加符号就判断不到)        if(Len(Replace(temp,"|&

C# Linq To DataTable 分组统计 DEMO

DataTable dt = SQLLayer.Get工作量统计(beginDate, endDate);            var querySum = from t in dt.AsEnumerable()                           group t by t.Field<string>("库房")                               into g                               selec

mysql查询分组归类函数-group_concat,通常与group_by一起使用

select a.`name`,group_concat(b.name SEPARATOR'.') as persons from `group` as a,`person` as b,`persongroup` as c where a.id = c.groupid and b.id = c.personid group by a.`name` 使用group_concat最终得到的数据效果:重复的name 通过group_by已经过滤掉了,同时被过滤数据的persons字段内容进行了追加.

对DataTable进行分组

因为程序的特殊情景,需要在sql查出来的DataTable进行分组,DataTable分组可以使用linq,也可以自己写分组程序. linq相对简单: cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 300; MySqlDataReader reader = cmd.ExecuteReader(); DataTable tb = new DataTable(); detailTable

深入详解DataTable

在学习DataTable知识之前,我们有必要了解下ADO.NET.以下摘自MSDN: ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问.数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索.处理和更新所包含的数据.ADO.NET 通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件.ADO.NET 包含用于连接到数据库.执行命令和检索结果的 .NET Frame

LINQ系列:LINQ to DataSet的DataTable操作

LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions. 1. DataTable读取列表 DataSet ds = new DataSet(); // 省略ds的Fill代码 DataTable products = ds.Tables["Product"]; IEnume

浅析MySQL使用 GROUP BY 分组聚合与细分聚合

1. 聚合函数(Aggregate Function) MySQL(5.7 ) 官方文档中给出的聚合函数列表(图片)如下: 详情点击https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html . 除非另有说明,否则聚合函数都会忽略空值(NULL values). 2. 聚合函数的使用 聚合函数通常对 GROUP BY 语句进行分组后的每个分组起作用,即,如果在查询语句中不使用 GROUP BY 对结果集分组,则聚合函数就对结果集

Linq&amp;Lumda---LINQ to DataSet的DataTable操作

1. DataTable读取列表 DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Product"];IEnumerable<DataRow> rows = from p in products.AsEnumerable()                            select p;foreach (DataRow row in rows){    Console

【转】GPS连续运行单参考站解决方案

GPS连续运行单参考站解决方案 一.  前言 随着国家信息化程度的提高及计算机网络和通信技术的飞速发展,电子政务.电子商务.数字城市.数字省区和数字地球的工程化和现实化,需要采集多种实时地理 空间数据,因此,中国发展CORS系统的紧迫性和必要性越来越突出.几年来,国内不同行业已经陆续建立了一些专业性的卫星定位连续运行网络,目前,为满足 国民经济建设信息化的需要,一大批城市.省区和行业正在筹划建立类似的连续运行网络系统,一个新的建网高潮正在到来. 当前国内不同行业建设的网站系统基本上还是独立运行的