如何在datatable中使用groupby进行分组统计
作者: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进行分组统计就是通过上面的代码进行实现的,希望可以对大家的学习有所帮助。