LINQ Group by和Sum语法

时间:2012-10-27 09:32:05

标签: vb.net linq group-by sum ienumerable

我有以下vb.net LINQ查询

Dim q = From row In dx.AsEnumerable
                Group row By G = New With {.Cat = row.Field(Of Integer)("catalogid")}.Cat,
                                 New With {.Backorder = row.Field(Of Integer)("backorder")}.Backorder Into pg = Group
                Select New With
                       {
                           .Cat = pg.Cat,
                           .Backorder = pg.Sum(Function(x) x.Backorder)
                       }

我有这个名为dx的数据表

catalogid      backorder
1              5
1              10
2              1
2              5

我希望Sum backordercatalogid相同,结果如下

catalogid      backorder
1              15
2              6

在Select new with part中,出了什么问题?

1 个答案:

答案 0 :(得分:1)

试试以下......

 var result = dx.AsEnumerable()
                .GroupBy(row => row.Field<int>("catalogid"))
                .Select(group => group.Sum(item => item.Field<int>     ("backorder")).CopyToDataTable();

var result= from s in dx.AsEnumerable()
            group s by s.Field<int>("catalogid") into grp
            select new { 
            CatalogId= grp.Key, 
            Back Order = grp.Sum(r => r.Field<int>("backorder"))
            };

DataTable datatbl = result.CopyToDataTable();