本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Enumerable.Aggregate<TSource, TAccumulate, TResult> 方法 (IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>)

 

对一个序列应用累加器函数。 将指定的种子值用作累加器的初始值,并使用指定的函数选择结果值。

命名空间:   System.Linq
程序集:  System.Core(位于 System.Core.dll)

public static TResult Aggregate<TSource, TAccumulate, TResult>(
	this IEnumerable<TSource> source,
	TAccumulate seed,
	Func<TAccumulate, TSource, TAccumulate> func,
	Func<TAccumulate, TResult> resultSelector
)

参数

source
Type: System.Collections.Generic.IEnumerable<TSource>

IEnumerable<T> 对其进行聚合。

seed
Type: TAccumulate

累加器的初始值。

func
Type: System.Func<TAccumulate, TSource, TAccumulate>

要对每个元素调用的累加器函数。

resultSelector
Type: System.Func<TAccumulate, TResult>

将累加器的最终值转换为结果值的函数。

返回值

Type: TResult

已转换的累加器最终值。

类型参数

TSource

中的元素的类型 source

TAccumulate

累加器值的类型。

TResult

结果值的类型。

Exception Condition
ArgumentNullException

sourcefuncresultSelectornull

Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>) 方法可以很容易地通过一系列值执行计算。 此方法适用于通过调用 func 中每个元素的一次 source 每次 func 调用时, Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>) 将从该序列,并聚合的值传递的两个元素 (作为第一个参数传递给 func)。seed 聚合的初始值为使用参数。 结果 func 替换以前的聚合的值。 最终结果 func 传递给 resultSelector 若要获取的最终结果 Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>)

若要简化常见的聚合操作,标准查询运算符,还包括一般用途的计数方法中, Count<TSource>, ,和四个数值聚合方法,即 Min, ,Max, ,Sum, ,和 Average

下面的代码示例演示如何使用 Aggregate<TSource, TAccumulate, TResult> 应用累加器函数和结果选择器。

string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };

// Determine whether any string in the array is longer than "banana".
string longestName =
    fruits.Aggregate("banana",
                    (longest, next) =>
                        next.Length > longest.Length ? next : longest,
    // Return the final result as an upper case string.
                    fruit => fruit.ToUpper());

Console.WriteLine(
    "The fruit with the longest name is {0}.",
    longestName);

// This code produces the following output:
//
// The fruit with the longest name is PASSIONFRUIT. 

通用 Windows 平台
自 8 起可用
.NET Framework
自 3.5 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: