Leggi in inglese

Condividi tramite


Enumerable.Aggregate Metodo

Definizione

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.

C#
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);

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

TResult

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.

C#
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.

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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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.

C#
public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func);

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

TAccumulate

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.

C#
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

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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Origine:
Aggregate.cs
Origine:
Aggregate.cs
Origine:
Aggregate.cs

Applica una funzione accumulatore a una sequenza.

C#
public static TSource Aggregate<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TSource,TSource> func);

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

TSource

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.

C#
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

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.

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0