如何在C#中使用Linq对列表中的每个元素应用函数,类似于Python中的reduce()方法?
如何在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"