过滤分组列值之和不为零的数据表

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