linq datatable group by 求和、取平均
时间: 2023-07-10 11:35:05 浏览: 107
可以使用LINQ语句对DataTable进行分组、求和、取平均等操作。
例如,对于以下的DataTable:
```
DataTable dt = new DataTable();
dt.Columns.Add("Category", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add("Fruit", 2.50);
dt.Rows.Add("Fruit", 3.00);
dt.Rows.Add("Vegetable", 1.25);
dt.Rows.Add("Vegetable", 2.00);
```
可以使用LINQ语句对Category进行分组,然后对每组的Price进行求和、取平均等操作:
```
var result = from row in dt.AsEnumerable()
group row by row.Field<string>("Category") into g
select new
{
Category = g.Key,
TotalPrice = g.Sum(row => row.Field<decimal>("Price")),
AveragePrice = g.Average(row => row.Field<decimal>("Price"))
};
```
这个LINQ语句首先调用`AsEnumerable()`将DataTable转换为可枚举的集合,然后使用`group by`将DataTable按Category分组。最后,使用`Sum()`和`Average()`对每组的Price进行求和、取平均操作,生成一个匿名类型的结果集合。
执行完上面的LINQ语句后,result的结果如下:
```
Category TotalPrice AveragePrice
-------------------------------------
Fruit 5.50 2.75
Vegetable 3.25 1.625
```
其中,Category列是分组后的类别,TotalPrice列是该类别下所有Price的总和,AveragePrice列是该类别下所有Price的平均值。
阅读全文