按列对DataTable中的行进行分组,然后对该组中其他列的内容求和

时间:2018-03-26 14:07:48

标签: c# linq datatable

我在C#中有一个看起来像这样的DataTable:

name | amount | other columns...
--------------------------------
  x  |   10   |
  x  |   20   |
  y  |   42   |
  y  |    1   |
  y  |   23   |

我想编写一个返回类似内容的方法:

name | total
-------------
  x  |  30
  y  |  66

有关要求的更多详情:

我从DataSet中的下表中的GetData查询获取DataTable,我需要的是按产品(字符串)分组的行和productAmount(int)的总和。

效率并不是一个值得关注的问题,任何人都可以提供帮助吗?

进一步编辑:如果它是相关的,我将DataTable更改为DataView,然后根据datePlaced列应用RowFilter,然后再执行DataView.toTable()以便在我之前将其恢复希望此查询运行。

1 个答案:

答案 0 :(得分:1)

假设您的数据表名称为ordersDT

ordersDT.Rows.Cast<DataRow>()
   .GroupBy(product => product["name"])
   .Select(grouped => new {
      name = grouped.Key,
      total = grouped.Sum(product => (int)product["amount"])
   });

我已经使用您的数据创建了一个示例,并对其进行了运行:

debugging