汇总数据表中的行(分组依据)

ser*_*hio -2 c# linq datatable linq-to-dataset

我有一个像这样的数据表

ProductId CountThisWeek CountLastWeek
        1            10            15         
        1            20             5

        2             5            10
        2            10            15
        2            10            20

        3            10            15
Run Code Online (Sandbox Code Playgroud)

我需要通过“压缩”(按 productId 求和)我的初始数据表来获得一个新的数据表,如下所示:

ProductId CountThisWeek CountLastWeek
        1            30            20         
        2            25            45
        3            10            15
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 LINQ 或其他技术来做到这一点(.NET 3.5)?

Ser*_*kiy 5

from r in table.AsEnumerable()
group r by r.Field<int>("ProductId") into g
select new {
   ProductId = g.Key,
   CountThisWeek = g.Sum(r => r.Field<int>("CountThisWeek")),
   CountLastWeek = g.Sum(r => r.Field<int>("CountLastWeek"))
}
Run Code Online (Sandbox Code Playgroud)

您可以使用CopyToDataTable()方法DataTable从这些匿名对象创建新对象。