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>)
- 來源:
- Aggregate.cs
- 來源:
- Aggregate.cs
- 來源:
- 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>
所要彙總 (Aggregate) 的 IEnumerable<T>。
- seed
- TAccumulate
初始累積值。
- func
- Func<TAccumulate,TSource,TAccumulate>
要在每個項目上叫用 (Invoke) 的累加函式。
- 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
一次。 每次呼叫時,Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)都會func
將序列中的 項目和匯總值傳遞 (做為第一個自變數來 func
) 。 參數的值 seed
會當做初始匯總值使用。 的結果 func
會取代先前的匯總值。 的最終結果 func
會傳遞至 resultSelector
,以取得的最終結果 Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)。
為了簡化常見的匯總作業,標準查詢運算子也包含一般用途的計數方法、 Count和四個數值匯總方法,也就是 Min、 MaxSum和 Average。
適用於
Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)
- 來源:
- Aggregate.cs
- 來源:
- Aggregate.cs
- 來源:
- 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>
所要彙總 (Aggregate) 的 IEnumerable<T>。
- seed
- TAccumulate
初始累積值。
- func
- Func<TAccumulate,TSource,TAccumulate>
要在每個項目上叫用 (Invoke) 的累加函式。
傳回
最終累積值。
例外狀況
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
一次。 每次呼叫時,Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)都會func
將序列中的 項目和匯總值傳遞 (做為第一個自變數來 func
) 。 參數的值 seed
會當做初始匯總值使用。 的結果 func
會取代先前的匯總值。 Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) 傳回的最終結果 func
。
為了簡化常見的匯總作業,標準查詢運算子也包含一般用途的計數方法、 Count和四個數值匯總方法,也就是 Min、 MaxSum和 Average。
適用於
Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)
- 來源:
- Aggregate.cs
- 來源:
- Aggregate.cs
- 來源:
- 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>
所要彙總 (Aggregate) 的 IEnumerable<T>。
- func
- Func<TSource,TSource,TSource>
要在每個項目上叫用 (Invoke) 的累加函式。
傳回
最終累積值。
例外狀況
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>) 可讓您輕鬆地對值序列執行計算。 此方法的運作方式是針對中每個元素呼叫 func
一次,但第一個元素 source
除外。 每次呼叫時,Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)都會func
將序列中的 項目和匯總值傳遞 (做為第一個自變數來 func
) 。 的第一個元素 source
會當做初始匯總值使用。 的結果 func
會取代先前的匯總值。 Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) 傳回的最終結果 func
。
此方法的 Aggregate 這個多載不適用於所有情況,因為它使用 的第一個專案 source
做為初始匯總值。 如果傳回值只包含符合特定條件的 source
元素,您應該選擇另一個多載。 例如,如果您想要計算 中 source
偶數的總和,這個多載並不可靠。 如果第一個專案是奇數,而不是偶數,則結果會不正確。
為了簡化常見的匯總作業,標準查詢運算子也包含一般用途的計數方法、 Count和四個數值匯總方法,也就是 Min、 MaxSum和 Average。