Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

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
)

Typparameter

TSource

Der Typ der Elemente von source.

TAccumulate

Der Typ des Akkumulatorwerts.

TResult

Der Typ des Ergebniswerts.

Parameter

source
Typ: System.Linq.IQueryable<TSource>
Eine Sequenz, die aggregiert werden soll.
seed
Typ: TAccumulate
Der erste Akkumulatorwert.
func
Typ: System.Linq.Expressions.Expression<Func<TAccumulate, TSource, TAccumulate>>
Eine Akkumulatorfunktion, die für jedes Element aufgerufen werden soll.
selector
Typ: System.Linq.Expressions.Expression<Func<TAccumulate, TResult>>
Eine Funktion zum Transformieren des letzten Akkumulatorwerts in den Ergebniswert.

Rückgabewert

Typ: TResult
Der transformierte letzte Akkumulatorwert.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IQueryable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source, func oder selector ist null.

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T, TResult>-Typen ist. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, und dieser wird zu einer Expression<TDelegate> kompiliert.

Die Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>)-Methode generiert einen MethodCallExpression, der den Aufruf von Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) durch sich selbst als konstruierte generische Methode darstellt. Anschließend übergibt sie die MethodCallExpression an die Execute<TResult>(Expression)-Methode des IQueryProvider, der von der Provider-Eigenschaft des source-Parameters dargestellt wird.

Das Abfrageverhalten, das durch das Ausführen einer Ausdrucksbaumstruktur auftritt, die einen Aufruf von Aggregate<TSource, TAccumulate, TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate, TSource, TAccumulate>>, Expression<Func<TAccumulate, TResult>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab. Es wird erwartet, dass die angegebene Funktion func auf jeden Wert in der Quellsequenz angewendet wird und der akkumulierte Wert zurückgegeben wird. Der seed-Parameter wird als Startwert für den akkumulierten Wert verwendet, der dem ersten Parameter in func entspricht. Der letzte akkumulierte Wert wird an selector übergeben, um den Ergebniswert zu erhalten.

Um häufige Aggregationsoperationen zu vereinfachen, enthält der Satz der Standardabfrageoperatoren auch die beiden Zählmethoden Count und LongCount sowie vier numerische Aggregationsmethoden, und zwar Max, Min, Sum und Average.

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


            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. 



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft