gpt4 book ai didi

c# - LINQ DataTable Sum In Where 子句

转载 作者:行者123 更新时间:2023-11-30 19:49:43 28 4
gpt4 key购买 nike

我很难弄清楚如何在 DataTable 上执行 LINQ 查询并返回整行,同时对总和进行 WHERE 子句测试。

我的代码:

transactionsToRemove.AddRange(paymentTransactionResults
.AsEnumerable()
.Where(...)
.GroupBy(r => (decimal)r["AccountNumber"]));

每个 AccountNumber 都有多个交易,我需要将它们加在一起并确定它们是否小于用户输入的金额(就我而言,它称为 balanceGreaterThan)。我找不到任何例子可以证明有人做过这种事。

提前致谢,SO。

编辑:抱歉——我需要求和的列称为“余额”

编辑 2:最终代码

transactionsToRemove.AddRange(paymentTransactionResults
.AsEnumerable()
.GroupBy(r => r.Field<string>("AccountNumber"))
.Where(g => g.Sum(r => r.Field<decimal>("Balance")) < balanceGreaterThan)
.SelectMany(g => g));

我必须更改 GroupBy 以使用 r.Field 而不是 r["AccountNumber"]

最佳答案

您正在尝试过滤组本身(以查找哪些组的总和较大),而不是进入组的行。
因此,您需要将 Where()GroupBy 之后打电话:

transactionsToRemove.AddRange(paymentTransactionResults
.AsEnumerable()
.GroupBy(r => (decimal)r["AccountNumber"])
.Where(g => g.Sum(r => r.Field<decimal>("Balance") < balanceGreaterThan));

编辑:如果您想获得 IEnumerable<DataRow>返回(而不是 IEnumerable<IGrouping<DataRow>> ),你需要添加 .SelectMany(g => g) .

关于c# - LINQ DataTable Sum In Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com