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

Posted

技术标签:

【中文标题】过滤分组列值之和不为零的数据表【英文标题】: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 - 是的,我们可以:) 我们很乐意为您提供帮助,但我们无法为您完成工作。你至少应该向我们展示你的一些尝试...... 有效点。同意。更新了我的问题:) 【参考方案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

【讨论】:

以上是关于过滤分组列值之和不为零的数据表的主要内容,如果未能解决你的问题,请参考以下文章

三角形的最大周长

主机部分不为零的子网

matlab找出两个向量都不为零的元素,并找出元素的位置

在不知道文件描述符的情况下检测文件大小不为零的最快方法是啥?

SQL Sub-Select,仅显示不为零的项目

Matlab - 各种函数学习