我想使用C#LINQ查询对我的数据表进行分组,并以最低和最高价格返回表。例如,波纹管表将按ItemNumber分组,然后按Cat1分组。对于生产结果,我需要获得集团的最低和最高价格。
ItemNumber Cat1 Low Price High Price
100 Item1 1 10
150 Item2 2 11
100 Item1 2 12
150 Item2 5 18
结果
ItemNumber Cat1 Low Price High Price
100 Item1 1 12
150 Item2 2 18
答案 0 :(得分:2)
假设结果是另一个带有聚合数据的DataTable
:
var aggrTable = table.Clone(); // schema only
var groups = table.AsEnumerable()
.GroupBy(r => new { ItemNumber = r.Field<int>("ItemNumber"), Cat1 = r.Field<string>("Cat1") });
foreach(var group in groups)
{
DataRow row = aggrTable.Rows.Add();
row.SetField("ItemNumber", group.Key.ItemNumber);
row.SetField("Cat1", group.Key.Cat1);
row.SetField("Low Price", group.Min(r => r.Field<int>("Low Price")));
row.SetField("High Price", group.Max(r => r.Field<int>("High Price")));
}
结果表(使用您的样本数据测试):
ItemNumber Cat1 Low Price High Price
100 Item1 1 12
150 Item2 2 18