Enumerable.Aggregate 方法 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) | 
						 对序列应用累加器函数。 将指定的种子值用作累加器的初始值,并使用指定的函数选择结果值。  | 
        	
| Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) | 
						 对序列应用累加器函数。 将指定的种子值用作累加器初始值。  | 
        	
| Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) | 
						 对序列应用累加器函数。  | 
        	
Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
对序列应用累加器函数。 将指定的种子值用作累加器的初始值,并使用指定的函数选择结果值。
public:
generic <typename TSource, typename TAccumulate, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static TResult Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func, Func<TAccumulate, TResult> ^ resultSelector);
	public static TResult Aggregate<TSource,TAccumulate,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func, Func<TAccumulate,TResult> resultSelector);
	static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> * Func<'Accumulate, 'Result> -> 'Result
	<Extension()>
Public Function Aggregate(Of TSource, TAccumulate, TResult) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate), resultSelector As Func(Of TAccumulate, TResult)) As TResult
    类型参数
- TSource
 
              source 的元素类型。
- TAccumulate
 
累加器值的类型。
- TResult
 
结果值的类型。
参数
- source
 - IEnumerable<TSource>
 
要聚合的 IEnumerable<T>。
- seed
 - TAccumulate
 
累加器的初始值。
- func
 - Func<TAccumulate,TSource,TAccumulate>
 
要对每个元素调用的累加器函数。
- resultSelector
 - Func<TAccumulate,TResult>
 
将累加器的最终值转换为结果值的函数。
返回
已转换的累加器最终值。
例外
              source、func 或 resultSelector 为 null。
示例
下面的代码示例演示如何使用 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());
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.
Sub AggregateEx3()
    Dim fruits() As String =
    {"apple", "mango", "orange", "passionfruit", "grape"}
    ' Determine whether any string in the array is longer than "banana".
    Dim longestName As String =
    fruits.Aggregate("banana",
                     Function(ByVal longest, ByVal fruit) _
                         IIf(fruit.Length > longest.Length, fruit, longest),
                     Function(ByVal fruit) fruit.ToUpper())
    ' Display the output.
    Console.WriteLine($"The fruit with the longest name is {longestName}")
End Sub
' This code produces the following output:
'
' The fruit with the longest name is PASSIONFRUIT
    	注解
方法 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四个数值聚合方法,即 Min、 Max、 Sum和 Average。
适用于
Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
对序列应用累加器函数。 将指定的种子值用作累加器初始值。
public:
generic <typename TSource, typename TAccumulate>
[System::Runtime::CompilerServices::Extension]
 static TAccumulate Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func);
	public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func);
	static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> -> 'Accumulate
	<Extension()>
Public Function Aggregate(Of TSource, TAccumulate) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate)) As TAccumulate
    类型参数
- TSource
 
              source 的元素类型。
- TAccumulate
 
累加器值的类型。
参数
- source
 - IEnumerable<TSource>
 
要聚合的 IEnumerable<T>。
- seed
 - TAccumulate
 
累加器的初始值。
- func
 - Func<TAccumulate,TSource,TAccumulate>
 
要对每个元素调用的累加器函数。
返回
累加器的最终值。
例外
              source 或 func 为 null。
示例
下面的代码示例演示如何使用 Aggregate 应用累加器函数并使用种子值。
int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 };
// Count the even numbers in the array, using a seed value of 0.
int numEven = ints.Aggregate(0, (total, next) =>
                                    next % 2 == 0 ? total + 1 : total);
Console.WriteLine("The number of even integers is: {0}", numEven);
// This code produces the following output:
//
// The number of even integers is: 6
Sub AggregateEx2()
    ' Create an array of Integers.
    Dim ints() As Integer = {4, 8, 8, 3, 9, 0, 7, 8, 2}
    ' Count the even numbers in the array, using a seed value of 0.
    Dim numEven As Integer =
    ints.Aggregate(0,
                   Function(ByVal total, ByVal number) _
                       IIf(number Mod 2 = 0, total + 1, total))
    ' Display the output.
    Console.WriteLine($"The number of even integers is {numEven}")
End Sub
' This code produces the following output:
'
'The number of even integers is 6
    	注解
方法 Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) 使对值序列执行计算变得简单。 此方法的工作原理是,对 中的每个source元素调用func一次。 每次 func 调用 时, Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) 都会将序列中的 元素和聚合值 (作为第一个参数传递给 func) 。 参数的值 seed 用作初始聚合值。 的结果 func 将替换以前的聚合值。 
              Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) 返回 的最终结果 func。
为了简化常见的聚合操作,标准查询运算符还包括一个常规用途计数方法和 Count四个数值聚合方法,即 Min、 Max、 Sum和 Average。
适用于
Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
- Source:
 - Aggregate.cs
 
对序列应用累加器函数。
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TSource, TSource> ^ func);
	public static TSource Aggregate<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TSource,TSource> func);
	static member Aggregate : seq<'Source> * Func<'Source, 'Source, 'Source> -> 'Source
	<Extension()>
Public Function Aggregate(Of TSource) (source As IEnumerable(Of TSource), func As Func(Of TSource, TSource, TSource)) As TSource
    类型参数
- TSource
 
              source 的元素类型。
参数
- source
 - IEnumerable<TSource>
 
要聚合的 IEnumerable<T>。
- func
 - Func<TSource,TSource,TSource>
 
要对每个元素调用的累加器函数。
返回
累加器的最终值。
例外
              source 或 func 为 null。
              source 中不包含任何元素。
示例
下面的代码示例演示如何使用 Aggregate反转字符串中单词的顺序。
string sentence = "the quick brown fox jumps over the lazy dog";
// Split the string into individual words.
string[] words = sentence.Split(' ');
// Prepend each word to the beginning of the
// new sentence to reverse the word order.
string reversed = words.Aggregate((workingSentence, next) =>
                                      next + " " + workingSentence);
Console.WriteLine(reversed);
// This code produces the following output:
//
// dog lazy the over jumps fox brown quick the
Sub AggregateEx1()
    Dim sentence As String =
    "the quick brown fox jumps over the lazy dog"
    ' Split the string into individual words.
    Dim words() As String = sentence.Split(" "c)
    ' Prepend each word to the beginning of the new sentence to reverse the word order.
    Dim reversed As String =
    words.Aggregate(Function(ByVal current, ByVal word) word & " " & current)
    ' Display the output.
    Console.WriteLine(reversed)
End Sub
' This code produces the following output:
'
' dog lazy the over jumps fox brown quick the
    	注解
方法 Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) 使对值序列执行计算变得简单。 此方法的工作原理是,除第一个元素外,对 中的每个source元素调用func一次。 每次 func 调用 时, Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) 都会将序列中的 元素和聚合值 (作为第一个参数传递给 func) 。 的第一个元素 source 用作初始聚合值。 的结果 func 将替换以前的聚合值。 
              Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) 返回 的最终结果 func。
方法的 Aggregate 此重载并非适用于所有情况,因为它使用 的第一个元素 source 作为初始聚合值。 如果返回值应仅包含满足特定条件的 source 元素,则应选择另一个重载。 例如,如果要计算 中的 source偶数之和,则此重载不可靠。 如果第一个元素是奇数而不是偶数,则结果将不正确。
为了简化常见的聚合操作,标准查询运算符还包括一个常规用途计数方法和 Count四个数值聚合方法,即 Min、 Max、 Sum和 Average。