Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Queryable.Aggregate<TSource, TAccumulate, TResult>-Methode: (IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>)

 

Veröffentlicht: Oktober 2016

Wendet eine Akkumulatorfunktion auf eine Sequenz an. Der angegebene Startwert wird als erster Akkumulatorwert verwendet, und der Ergebniswert wird mit der angegebenen Funktion ausgewählt.

Namespace:   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
)

Parameter

source
Type: System.Linq.IQueryable<TSource>

Eine Sequenz, die aggregiert werden soll.

seed
Type: TAccumulate

Der erste Akkumulatorwert.

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

Eine Akkumulatorfunktion, die für jedes Element aufgerufen werden soll.

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

Eine Funktion zum Transformieren des letzten Akkumulatorwerts in den Ergebniswert.

Rückgabewert

Type: TResult

Der transformierte letzte Akkumulatorwert.

Typparameter

TSource

Der Typ der Elemente von source.

TAccumulate

Der Typ des Akkumulatorwerts.

TResult

Der Typ des Ergebniswerts.

Exception Condition
ArgumentNullException

source oder func oder selector ist null.

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate> deren Typargument ist eines der Func<T, TResult> Typen. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, und es werden kompiliert, um eine Expression<TDelegate>.

Die Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) -Methode generiert eine MethodCallExpression Aufruf darstellt Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) sich selbst als konstruierte generische Methode. Anschließend übergibt der MethodCallExpression zu der Execute<TResult>(Expression) Methode der IQueryProvider durch dargestellt die Provider Eigenschaft der source Parameter.

Das Abfrageverhalten durch das Ausführen einer Ausdrucksbaumstruktur, die aufrufende darstellt, Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) hängt von der Implementierung des Typs der source Parameter. Das erwartete Verhalten ist, die die angegebene Funktion func, gilt für jeden Wert in der Quellsequenz und der akkumulierte Wert zurückgegeben wird. Die seed Parameter dient als Startwert für den akkumulierten Wert entspricht der erste Parameter in func. Der letzte akkumulierte Wert wird an übergeben selector um den Ergebniswert zu erhalten.

Um häufige Aggregationsoperationen zu vereinfachen, enthält der Satz von Standardabfrageoperatoren auch zwei zählen Methoden, Count<TSource> und LongCount<TSource>, sowie vier numerische Aggregationsmethoden, nämlich Max<TSource>, Min<TSource>, Sum, und Average.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) eine Akkumulatorfunktion und eine Ergebnisauswahl angewendet.

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. 

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.1
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: