Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Queryable.Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>)

 

Data di pubblicazione: novembre 2016

Applica una funzione accumulatore 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.

Spazio dei nomi:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static TResult Aggregate<TSource, TAccumulate, TResult>(
	this IQueryable<TSource> source,
	TAccumulate seed,
	Expression<Func<TAccumulate, TSource, TAccumulate>> func,
	Expression<Func<TAccumulate, TResult>> selector
)

Parametri

source
Type: System.Linq.IQueryable<TSource>

Una sequenza su cui aggregare.

seed
Type: TAccumulate

Valore iniziale dell'accumulatore.

func
Type: System.Linq.Expressions.Expression<Func<TAccumulate, TSource, TAccumulate>>

Funzione accumulatore da richiamare su ogni elemento.

selector
Type: System.Linq.Expressions.Expression<Func<TAccumulate, TResult>>

Una funzione per trasformare il valore finale dell'accumulatore nel valore risultante.

Valore restituito

Type: TResult

Il valore finale trasformato dell'accumulatore.

Parametri tipo

TSource

Tipo degli elementi di source.

TAccumulate

Tipo del valore dell'accumulatore.

TResult

Il tipo del valore risultante.

Exception Condition
ArgumentNullException

Il parametro source, il parametro func o il parametro selector è null.

Questo metodo contiene almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno del Func<T, TResult> tipi. Per questi parametri, è possibile passare un'espressione lambda e verrà compilato in un Expression<TDelegate>.

Il Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) metodo genera un MethodCallExpression che rappresenta una chiamata Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) stesso come un metodo generico costruito. Passa quindi il MethodCallExpression per il Execute<TResult>(Expression) metodo il IQueryProvider rappresentato dal Provider proprietà del source parametro.

Il comportamento della query che si verifica in seguito all'esecuzione di una struttura ad albero dell'espressione che rappresenta una chiamata Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) dipende dall'implementazione del tipo di source parametro. Il comportamento previsto è che la funzione specificata, func, viene applicato a ogni valore nella sequenza di origine e di accumulato viene restituito. Il seed parametro viene utilizzato come valore di inizializzazione per il valore accumulato, che corrisponde al primo parametro in func. Il valore finale accumulato viene passato a selector per ottenere il valore di risultato.

Per semplificare le comuni operazioni di aggregazione, il set di operatori di query standard include anche due metodi di conteggio, Count<TSource> e LongCount<TSource>, e quattro i metodi di aggregazione numerica, vale a dire Max<TSource>, Min<TSource>, Sum, e Average.

Esempio di codice seguente viene illustrato come utilizzare Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) per applicare una funzione accumulatore e un selettore di risultato.

string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };

// Determine whether any string in the array is longer than "banana".
string longestName =
    fruits.AsQueryable().Aggregate(
    "banana",
    (longest, next) => next.Length > longest.Length ? next : longest,
    // Return the final result as an uppercase 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. 

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.1
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: