datatable使用groupby进行分组统计
2012-08-31 16:45
495 查看
如何在datatable中进行分组,并且计算分组后每组的数量,想了一下,可以使用LINQ来实现datatable分组。代码如下
效果
区域 库房 数量
北京---北京仓库---1
北京---上海仓库---1
上海---上海仓库---2
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)
{
Console.WriteLine(item.areaid + "---" + item.house);
}
Console.WriteLine(item.areaid + "---" + item.house + "---" + item.rowcount);
Console.WriteLine("\r\n");
}
Console.ReadKey();
效果
区域 库房 数量
北京---北京仓库---1
北京---上海仓库---1
上海---上海仓库---2
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)
{
Console.WriteLine(item.areaid + "---" + item.house);
}
Console.WriteLine(item.areaid + "---" + item.house + "---" + item.rowcount);
Console.WriteLine("\r\n");
}
Console.ReadKey();
相关文章推荐
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
- datatable使用groupby进行分组统计
- 如何在datatable中使用groupby进行分组统计
- C# datatable使用groupby进行分组统计
- python中Groupby使用(四)-通过函数进行分组
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
- php7中使用mongoDB的聚合操作对数据进行分组求和统计操作
- 使用R进行分组统计
- sails-mysql 使用 groupBy 进行分组遇到的坑
- 使用DataTable进行统计与分析
- pandas中Groupby的使用(三)-根据dtype对列进行分组
- mongodb中使用mapreduce进行分组统计
- Excel 中使用SQL 语句查询数据(八)-----用Group by 进行分组统计
- LINQ实现多次调用GroupBy进行分组统计
- 使用DataTable进行统计与分析
- 使用DataTable进行统计与分析(.net)
- 如何对DataTable进行动态分组和动态统计[C#]
- java使用mongo数据库,怎么根据两列进行分组统计并分页
- sails-mongo 使用 groupBy 进行分组遇到的坑
- spark 按照key 分组 然后统计每个key对应的最大、最小、平均值思路——使用groupby,或者reduceby