过滤分组列值之和不为零的数据表
Filtering datatable where sum of grouped column value is not zero
我们能否显示分组列值不为零的数据 table 行。
首先,我需要按 sno
分组并显示数量不为零的未分组数据。
例如:
我有如下数据 table:
需要这样的输出
但是我用下面的代码得到了这个
FinalDataTable = table.AsEnumerable()
.GroupBy(r => new { Col1 = r["sno"]})
.Select(g =>{
var row = table.NewRow();
row["sno"] = g.Key.Col1;
row["amount"] = g.Sum(r => r.Field<decimal>("amount"));
return row;
}).CopyToDataTable();
是的,您要做的是按 sno
分组,然后使用 Where 查找金额之和不为零的那些记录。然后简单地使用 Select Many 将这些组解包回行。
我认为应该这样做(我假设金额是 int
)
FinalDataTable = table.AsEnumerable()
.GroupBy(r => r["sno"])
.Where(g => g.Sum(r => (int)r["amount"]) != 0)
.SelectMany(r => r)
.CopyToDataTable();
这是一个活生生的例子:https://dotnetfiddle.net/ixi0aW
我们能否显示分组列值不为零的数据 table 行。
首先,我需要按 sno
分组并显示数量不为零的未分组数据。
例如: 我有如下数据 table:
需要这样的输出
但是我用下面的代码得到了这个
FinalDataTable = table.AsEnumerable()
.GroupBy(r => new { Col1 = r["sno"]})
.Select(g =>{
var row = table.NewRow();
row["sno"] = g.Key.Col1;
row["amount"] = g.Sum(r => r.Field<decimal>("amount"));
return row;
}).CopyToDataTable();
是的,您要做的是按 sno
分组,然后使用 Where 查找金额之和不为零的那些记录。然后简单地使用 Select Many 将这些组解包回行。
我认为应该这样做(我假设金额是 int
)
FinalDataTable = table.AsEnumerable()
.GroupBy(r => r["sno"])
.Where(g => g.Sum(r => (int)r["amount"]) != 0)
.SelectMany(r => r)
.CopyToDataTable();
这是一个活生生的例子:https://dotnetfiddle.net/ixi0aW