如何在C#中使用Linq对列表中的每个元素应用函数,类似于Python中的reduce()方法?

3 投票
2 回答
1149 浏览
提问于 2025-04-16 04:46

如何在C#中使用Linq对列表中的每个元素应用一个函数,就像在Python中使用reduce()方法一样?

2 个回答

2

Enumerable.Aggregate就是你要找的答案。可以把它想象成一个把列表里的东西合并起来的工具。比如说,reduce(function, list, seed) 就等于 list.Aggregate(seed, function)。另外,还有很多现成的“聚合”方法,比如求和(Sum)、最小值(Min)、最大值(Max)、平均值(Average)等等。如果你需要的聚合方法是内置的,那就直接用那些现成的,不用自己再用Aggregate。

11

假设你说的是这个reduce函数,那么在C#和LINQ中对应的功能是Enumerable.Aggregate

这里有个简单的例子:

var list = Enumerable.Range(5, 3); // [5, 6, 7]
Console.WriteLine("Aggregation: {0}", list.Aggregate((a, b) => (a + b)));
// Result is "Aggregation: 18"

撰写回答