gpt4 book ai didi

c# - LINQ - 根据字段总和在集合中查找项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:14 25 4
gpt4 key购买 nike

这个问题有点难以解释,但我会尽量简短。

我有这样的情况,我有一个键/值对的集合,比如这个。

class Foo {
int Number { get; set; }
int Value { get; set; }
}

然后我会像这样设置一个集合......

var collection = new List<Foo>{
new Foo { Number = 1, Value = 1 },
new Foo { Number = 2, Value = 2 },
new Foo { Number = 3, Value = 3 },
new Foo { Number = 4, Value = 4 }
};

所以我想基本上能够找到所有先前值的总和小于或等于给定值的数字。例如……

如果给定值 3,则返回的数字应为 collection[1]。 (collection[0] 的值为 1,collection[1] 的值为 2,总和为 3)

我可以使用几行不同的代码来完成此操作,但我想知道 LINQ 是否能够以更简洁的方式完成此操作。

最佳答案

不,LINQ 不适合这样做。这是可能,但您基本上必须使用Aggregate 函数并提供您自己的聚合创建委托(delegate)。这样做要简单得多(更不用说更容易理解了):

int sum = 0;

foreach(var item in collection)
{
sum += item.Value;

if (sum >= targetValue) return item;
}

return null;

关于c# - LINQ - 根据字段总和在集合中查找项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11481182/

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