我正在使用C#4.0。 我的数据表是这样的:
ZONE Value
A 10
A 20
B 5
C 15
C 5
我想得到Zone的总和。
Zone A = 30
Zone B = 5
Zone C = 20
我怎么能在linq中做到这一点。
答案 0 :(得分:1)
按 ZONE 字段的值对行进行分组,然后计算组中所有行的 Value 字段的总和(分组键将为区域名称):
var query = from r in table.AsEnumerable()
group r by r.Field<string>("ZONE") into g
select new {
Zone = g.Key,
TotalValue = g.Sum(r => r.Field<int>("Value"))
};
答案 1 :(得分:0)
var results = (from r in dt.AsEnumerable()
group r by r.Field<string>("ZONE") into g
select new {
Zone = g.Key,
Sum = g.Sum(x => x.Field<int>("Value"))
})
或
var results = dt.AsEnumerable()
.GroupBy(
x = > x.Field<string>("ZONE"),
(k, g) => new { ZONE = k, Sum = g.Sum(x => x.Field<int>("VALUE")) });