【问题标题】:Filtering datatable where sum of grouped column value is not zero过滤分组列值之和不为零的数据表
【发布时间】:2021-06-09 10:13:22
【问题描述】:

我们能否显示分组列值不为零的数据表行。 首先,我需要按sno 分组并显示数量不为零的未分组数据。

例如: 我有一个如下的数据表:

需要这样的输出

但是我用下面的代码得到了这个

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();

【问题讨论】:

  • 代码?你试过什么?
  • Can we display - 是的,我们可以:)
  • 我们很乐意为您提供帮助,但我们无法为您完成工作。你至少应该向我们展示你的一些尝试......
  • 有效点。同意。更新了我的问题:)

标签: c# .net linq datatable filtering


【解决方案1】:

是的,您要做的是按 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

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 2023-03-28
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多