导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

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

2013/12/13

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

Namespace:  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
)

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型: System.Collections.Generic.IEnumerable<TSource>
要聚合的 IEnumerable<T>
seed
类型: TAccumulate
累加器的初始值。
func
类型: System.Func<TAccumulate, TSource, TAccumulate>
要对每个元素调用的累加器函数。
resultSelector
类型: System.Func<TAccumulate, TResult>
将累加器的最终值转换为结果值的函数。

返回值

类型: TResult
已转换的累加器最终值。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable<TSource> 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourcefuncresultSelectornull

Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>) 方法可简化在值序列上执行的计算。 此方法的工作原理是对 source 中的每个元素调用一次 func。 每次调用 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)和四个数值聚合方法(即 MinMaxSumAverage)。

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


      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());

      outputBlock.Text += String.Format(
          "The fruit with the longest name is {0}.",
          longestName) + "\n";

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



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2014 Microsoft