gpt4 book ai didi

c# - 仅在一个 LINQ 表达式中获取 IEnumerable 集合的总和

转载 作者:行者123 更新时间:2023-11-30 19:32:02 25 4
gpt4 key购买 nike

假设我有一个无限生成器A()。我想要的是获取 A 返回的所有数字的总和,使得总和不超过值 N 仅在一个 LINQ 表达式中.

我想知道是否有扩展方法可以帮助我解决这个问题?

经典的方式是:

int sum = 0;
foreach (int x in A()) {
sum += x;
if (sum > N) {
break;
}
}

return sum;

但我一直在想如何只用一个表达式来做却没有成功...

最佳答案

使用标准惯用的 LINQ,这是不可能的。您需要的语义是 Aggregate()TakeWhile() 的组合。否则,您需要有副作用,这在 LINQ 中是禁忌。

这是一个带有副作用的方法示例:

var temp = 0;
var sum = A().TakeWhile(i =>
{
var res = !(temp > N);
temp += i;
return res;
}).Sum();

关于c# - 仅在一个 LINQ 表达式中获取 IEnumerable 集合的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038099/

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