Aggregate 方法是 LINQ 中的一个强大工具,用于对序列应用累加器函数。它可以简化许多聚合运算。
示例:求和
int[] nums = { 1, 2, 3, 4, 5 };
int sum = nums.Aggregate((a, b) => a + b);
Console.WriteLine(sum); // 输出 15
用法
1. 基本用法
Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>) 对序列应用累加器函数。
示例:字符串连接
string[] words = { "Hello", "world" };
string sentence = words.Aggregate((a, b) => a + " " + b);
Console.WriteLine(sentence); // 输出 "Hello world"
2. 带种子值的用法
Aggregate<TSource, TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>) 使用指定的种子值作为累加器初始值。
示例:计算偶数个数
int[] numbers = { 1, 2, 3, 4, 5 };
int evenCount = numbers.Aggregate(0, (count, n) => n % 2 == 0 ? count + 1 : count);
Console.WriteLine(evenCount); // 输出 2
3. 带结果选择器的用法
Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>) 使用指定的函数选择结果值。
示例:查找最长单词并转换为大写
string[] fruits = { "apple", "banana", "cherry" };
string longestFruit = fruits.Aggregate("",
(longest, next) => next.Length > longest.Length ? next : longest,
fruit => fruit.ToUpper());
Console.WriteLine(longestFruit); // 输出 "BANANA"
注意事项:
-
性能:对于大数据集,使用 Aggregate 方法可能会影响性能。
-
空值检查:在实际使用中,应添加空值检查以避免异常。
通过这些示例,可以看出 Aggregate 方法在处理复杂聚合操作时非常有用。
1972

被折叠的 条评论
为什么被折叠?



