Enumerable.Aggregate Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) |
Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore e la funzione specificata viene usata per selezionare il valore risultante. |
Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) |
Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore. |
Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) |
Applica una funzione accumulatore a una sequenza. |
Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore e la funzione specificata viene usata per selezionare il valore risultante.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
- TAccumulate
Tipo del valore dell'accumulatore.
- TResult
Il tipo del valore risultante.
Parametri
- source
- IEnumerable<TSource>
Oggetto IEnumerable<T> a cui aggregare.
- seed
- TAccumulate
Valore iniziale dell'accumulatore.
- func
- Func<TAccumulate,TSource,TAccumulate>
Funzione accumulatore da richiamare per ogni elemento.
- resultSelector
- Func<TAccumulate,TResult>
Una funzione per trasformare il valore finale dell'accumulatore nel valore risultante.
Restituisce
Il valore finale trasformato dell'accumulatore.
Eccezioni
Il parametro source
, il parametro func
o il parametro resultSelector
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come utilizzare Aggregate per applicare una funzione accumulatore e un selettore di risultati.
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
Commenti
Il Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) metodo semplifica l'esecuzione di un calcolo su una sequenza di valori. Questo metodo funziona chiamando func
una sola volta per ogni elemento in source
. Ogni volta func
che viene chiamato , Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) passa sia l'elemento dalla sequenza che un valore aggregato (come primo argomento a func
). Il valore del seed
parametro viene usato come valore di aggregazione iniziale. Il risultato di func
sostituisce il valore aggregato precedente. Il risultato finale di func
viene passato a resultSelector
per ottenere il risultato finale di Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>).
Per semplificare le operazioni di aggregazione comuni, gli operatori di query standard includono anche un metodo di conteggio per utilizzo generico, Counte quattro metodi di aggregazione numerica, ovvero Min, Max, Sume Average.
Si applica a
Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
- TAccumulate
Tipo del valore dell'accumulatore.
Parametri
- source
- IEnumerable<TSource>
Oggetto IEnumerable<T> a cui aggregare.
- seed
- TAccumulate
Valore iniziale dell'accumulatore.
- func
- Func<TAccumulate,TSource,TAccumulate>
Funzione accumulatore da richiamare per ogni elemento.
Restituisce
Valore finale dell'accumulatore.
Eccezioni
source
o func
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come utilizzare Aggregate per applicare una funzione accumulatore e usare un valore di inizializzazione.
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
Commenti
Il Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) metodo semplifica l'esecuzione di un calcolo su una sequenza di valori. Questo metodo funziona chiamando func
una sola volta per ogni elemento in source
. Ogni volta func
che viene chiamato , Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) passa sia l'elemento dalla sequenza che un valore aggregato (come primo argomento a func
). Il valore del seed
parametro viene usato come valore di aggregazione iniziale. Il risultato di func
sostituisce il valore aggregato precedente. Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) restituisce il risultato finale di func
.
Per semplificare le operazioni di aggregazione comuni, gli operatori di query standard includono anche un metodo di conteggio per utilizzo generico, Counte quattro metodi di aggregazione numerica, ovvero Min, Max, Sume Average.
Si applica a
Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
- Origine:
- Aggregate.cs
Applica una funzione accumulatore a una sequenza.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IEnumerable<TSource>
Oggetto IEnumerable<T> a cui aggregare.
- func
- Func<TSource,TSource,TSource>
Funzione accumulatore da richiamare per ogni elemento.
Restituisce
Valore finale dell'accumulatore.
Eccezioni
source
o func
è null
.
source
non contiene elementi.
Esempio
Nell'esempio di codice seguente viene illustrato come invertire l'ordine delle parole in una stringa usando 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
Commenti
Il Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) metodo semplifica l'esecuzione di un calcolo su una sequenza di valori. Questo metodo funziona chiamando func
una sola volta per ogni elemento in source
, ad eccezione del primo. Ogni volta func
che viene chiamato , Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) passa sia l'elemento dalla sequenza che un valore aggregato (come primo argomento a func
). Il primo elemento di source
viene usato come valore di aggregazione iniziale. Il risultato di func
sostituisce il valore aggregato precedente. Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) restituisce il risultato finale di func
.
Questo overload del Aggregate metodo non è adatto per tutti i casi perché usa il primo elemento di source
come valore di aggregazione iniziale. È consigliabile scegliere un altro overload se il valore restituito deve includere solo gli elementi di source
che soddisfano una determinata condizione. Ad esempio, questo overload non è affidabile se si vuole calcolare la somma dei numeri pari in source
. Il risultato non sarà corretto se il primo elemento è dispari anziché pari.
Per semplificare le operazioni di aggregazione comuni, gli operatori di query standard includono anche un metodo di conteggio per utilizzo generico, Counte quattro metodi di aggregazione numerica, ovvero Min, Max, Sume Average.