如何通过linq获得Datatable的总和

时间:2014-02-10 15:28:29

标签: linq datatable

我正在使用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中做到这一点。

2 个答案:

答案 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")) });