我们在做项目的时候,经常需要根据表或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

  

DataTable分组归类的更多相关文章

  1. 【其他-小技巧-Uipath】VB语法操作DataTable分组并求和

    需要对DataTable分组求和的语法:VB.net 和C#中还有点不太一样.最后试了好多方法,要这么写 我的dataTabel数据: (From p In dataTabel.AsEnumerabl ...

  2. c# datatable 分组

    DataTable dt = new DataTable(); IEnumerable<IGrouping<, ));//按行政区代码前两位分组

  3. datatable 分组

    public static void PrintPersons() { //准备数据 DataTable dt = new DataTable(); dt.Columns.Add(new DataCo ...

  4. C# Linq To DataTable 分组统计 DEMO

    DataTable dt = SQLLayer.Get工作量统计(beginDate, endDate);             var querySum = from t in dt.AsEnum ...

  5. linq 将datatable分组求和在转datatable

    DataTable dt = new DataTable(); dt.Columns.Add("CustomerID"); dt.Columns.Add("aa" ...

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

    select a.`name`,group_concat(b.name SEPARATOR'.') as persons from `group` as a,`person` as b,`person ...

  7. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  8. LINQ系列:LINQ to DataSet的DataTable操作

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  9. 深入详解DataTable

    在学习DataTable知识之前,我们有必要了解下ADO.NET.以下摘自MSDN: ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XM ...

随机推荐

  1. Mir2源码详解之服务端-选择(角色)网关(SelGate)

    其实,SelGate也就是 LoginGate,其源码实现完全相同.不必怀疑,市面上的都是这么做~!这里单独写这篇文章,就是为了说明这点!

  2. 完成了server和client的框架设计

    界面暂且也不搞.先把框架搭建起来.

  3. nginx + php +mysql (适配thinkphp)

    Nginx 单机配置 http://tengine.taobao.org/book/index.html (taobao book) http://ubuntuhandbook.org/index.p ...

  4. ie使用firebug

    在网页插入以下代码即可. <script type="text/javascript" src="http://getfirebug.com/releases/li ...

  5. POJ C程序设计进阶 编程题#1:单词翻转

    编程题#1:单词翻转 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一 ...

  6. CentOS6.4安装Smokeping节点监控软件

    Smokeping:它是rrdtool的作者制作的,在图形显示方面很漂亮,可以用来很好的检测网络状态和稳定性,下面简单说一下Smokeping的安装以及配置方法. 0.首先关闭selinux和防火墙 ...

  7. windows phone上下文菜单ContextMenu的使用示例

    新建一个WP项目,命名为contextmenu,然后往界面拖入一个ListBox控件listBox1,接着切换到XAML代码界面设置其属性,代码如下 <ListBox Height=" ...

  8. SQL中删除某数据库所有trigger及sp

    SQL中删除某数据库所有trigger及sp   编写人:CC阿爸 2014-6-14 在日常SQL数据库的操作中,如何快速的删除所有trigger及sp呢 以下有三种方式可快速处理. --第一种 - ...

  9. FusionCharts X轴显示方式

    本文摘自ITYPE 网站的wangxiao5530 原文网址为:http://wangxiao5530.iteye.com/blog/1454200 1)Wrap Mode (换行模式) <ch ...

  10. ASP.NET MVC5学习笔记之Controller执行ControllerDescriptor和ActionDescriptor

    一. ControllerDescriptor说明 ControllerDescriptor是一个抽象类,它定义的接口代码如下: public abstract class ControllerDes ...