如何在datatable中使用groupby进行分组统计

 更新时间:2015年08月11日 14:29:21   作者:zx13525079024  
如何在datatable中进行分组,并且计算分组后每组的数量,考虑了一下,可以使用LINQ来实现datatable分组,需要的朋友可以参考下

本文介绍了在datatable中使用groupby进行分组统计,下面是为大家分享的效果图和实现代码:

实现效果

在SQL中我们可以使用groupby来进行分组统计,如果数据在datatable中该如何使用groupby呢,下面的方法可以实现groupby,代码如下:

 DataTable dt = new DataTable("cart"); 
      DataColumn dc1 = new DataColumn("areaid", Type.GetType("System.String")); 
      DataColumn dc2 = new DataColumn("house", Type.GetType("System.String")); 
      DataColumn dc3 = new DataColumn("seq", Type.GetType("System.String")); 
      DataColumn dc4 = new DataColumn("remark", Type.GetType("System.String")); 
     
      dt.Columns.Add(dc1); 
      dt.Columns.Add(dc2); 
      dt.Columns.Add(dc3); 
      dt.Columns.Add(dc4); 
 
 
      DataRow dr = dt.NewRow(); 
      dr["areaid"] = "北京"; 
      dr["house"] = "北京仓库"; 
      dr["seq"] = "2"; 
      dr["remark"] = "货到付款"; 
      dt.Rows.Add(dr); 
 
 
      DataRow dr1 = dt.NewRow(); 
      dr1["areaid"] = "北京"; 
      dr1["house"] = "上海仓库"; 
      dr1["seq"] = "1"; 
      dr1["remark"] = "货到付款"; 
      dt.Rows.Add(dr1); 
 
      DataRow dr2 = dt.NewRow(); 
      dr2["areaid"] = "上海"; 
      dr2["house"] = "上海仓库"; 
      dr2["seq"] = "1"; 
      dr2["remark"] = "货到付款"; 
      dt.Rows.Add(dr2); 
 
      DataRow dr3 = dt.NewRow(); 
      dr3["areaid"] = "上海"; 
      dr3["house"] = "北京仓库"; 
      dr3["seq"] = "1"; 
      dr3["remark"] = "货到付款"; 
      dt.Rows.Add(dr3); 
 
 
      var query = from t in dt.AsEnumerable() 
            group t by new { t1 = t.Field<string>("areaid"), t2 = t.Field<string>("seq") } into m 
            select new 
            { 
              areaid = m.Key.t1, 
              seq = m.Key.t2, 
              house = m.First().Field<string>("house"), 
              rowcount = m.Count() 
            }; 
 
 
       Console.WriteLine("区域 "+" 库房"+"  数量"); 
      foreach (var item in query.ToList()) 
      { 
        if (item.rowcount>1) 
        { 
          MessageBox.Show(item.areaid+"---"+item.house); 
        } 
        Console.WriteLine(item.areaid+"---"+item.house+"---"+item.rowcount); 
        Console.WriteLine("\r\n"); 
      }

 在datatable中使用groupby进行分组统计就是通过上面的代码进行实现的,希望可以对大家的学习有所帮助。

相关文章

  • 详解如何在C#中处理空值

    详解如何在C#中处理空值

    在任何编程语言中开发应用程序时,经常会遇到空异常或空引用异常,那么下面让我们探讨一下在C#中处理空值的各种方法吧,需要的可以收藏下
    2023-07-07
  • C#模拟链表数据结构的实例解析

    C#模拟链表数据结构的实例解析

    这篇文章主要介绍了C#模拟链表数据结构的实例解析,包括队双向链表的模拟方法,例子中队链表的操作也有很好的说明,需要的朋友可以参考下
    2016-04-04
  • C# 格式化字符首字母大写的方法

    C# 格式化字符首字母大写的方法

    这篇文章介绍了C# 格式化字符首字母大写的方法,有需要的朋友可以参考一下
    2013-08-08
  • Unity3D实现人物移动示例

    Unity3D实现人物移动示例

    这篇文章主要为大家详细介绍了Unity3D实现人物移动示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C#中实现在32位、64位系统下自动切换不同的SQLite dll文件

    C#中实现在32位、64位系统下自动切换不同的SQLite dll文件

    这篇文章主要介绍了C#中实现在32位、64位系统下自动切换不同的SQLite dll文件,本文使用C#代码实现DLL文件的切换,需要的朋友可以参考下
    2014-09-09
  • C#将指定目录所有文件名转换成小写的方法

    C#将指定目录所有文件名转换成小写的方法

    这篇文章主要介绍了C#将指定目录所有文件名转换成小写的方法,涉及C#中目录的遍历及filename.ToLowerInvariant方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 深入理解C#中回调函数

    深入理解C#中回调函数

    回调函数是一种在编程中常用的概念,本文将介绍回调函数的概念、语法和应用,并讨论如何设计优化和重用回调函数,以及它们在并发编程中的用途,感兴趣的可以了解一下
    2024-02-02
  • C# Winform实现石头剪刀布游戏

    C# Winform实现石头剪刀布游戏

    这篇文章主要为大家详细介绍了Winform实现石头剪刀布游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C#构造函数在基类和父类中的执行顺序

    C#构造函数在基类和父类中的执行顺序

    这篇文章介绍了C#构造函数在基类和父类中的执行顺序,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#通过DataSet读写xml文件的方法

    C#通过DataSet读写xml文件的方法

    这篇文章主要介绍了C#通过DataSet读写xml文件的方法,涉及C#使用DataSet操作XML的相关技巧,方法简单实用,需要的朋友可以参考下
    2015-05-05

最新评论