Queryable.Aggregate Method

Definition

Overloads

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

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence. Der angegebene Startwert wird als erster Akkumulatorwert verwendet, und der Ergebniswert wird mit der angegebenen Funktion ausgewählt.The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value.

Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence. Der angegebene Startwert wird als erster Akkumulatorwert verwendet.The specified seed value is used as the initial accumulator value.

Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence.

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

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence. Der angegebene Startwert wird als erster Akkumulatorwert verwendet, und der Ergebniswert wird mit der angegebenen Funktion ausgewählt.The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value.

public:
generic <typename TSource, typename TAccumulate, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static TResult Aggregate(System::Linq::IQueryable<TSource> ^ source, TAccumulate seed, System::Linq::Expressions::Expression<Func<TAccumulate, TSource, TAccumulate> ^> ^ func, System::Linq::Expressions::Expression<Func<TAccumulate, TResult> ^> ^ selector);
public static TResult Aggregate<TSource,TAccumulate,TResult> (this System.Linq.IQueryable<TSource> source, TAccumulate seed, System.Linq.Expressions.Expression<Func<TAccumulate,TSource,TAccumulate>> func, System.Linq.Expressions.Expression<Func<TAccumulate,TResult>> selector);
static member Aggregate : System.Linq.IQueryable<'Source> * 'Accumulate * System.Linq.Expressions.Expression<Func<'Accumulate, 'Source, 'Accumulate>> * System.Linq.Expressions.Expression<Func<'Accumulate, 'Result>> -> 'Result
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate, TResult) (source As IQueryable(Of TSource), seed As TAccumulate, func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)), selector As Expression(Of Func(Of TAccumulate, TResult))) As TResult

Type Parameters

TSource

Der Typ der Elemente von source.The type of the elements of source.

TAccumulate

Der Typ des Akkumulatorwerts.The type of the accumulator value.

TResult

Der Typ des Ergebniswerts.The type of the resulting value.

Parameters

source
IQueryable<TSource>

Eine Sequenz, die aggregiert werden soll.A sequence to aggregate over.

seed
TAccumulate

Der erste Akkumulatorwert.The initial accumulator value.

func
Expression<Func<TAccumulate,TSource,TAccumulate>>

Eine Akkumulatorfunktion, die für jedes Element aufgerufen werden soll.An accumulator function to invoke on each element.

selector
Expression<Func<TAccumulate,TResult>>

Eine Funktion zum Transformieren des letzten Akkumulatorwerts in den Ergebniswert.A function to transform the final accumulator value into the result value.

Returns

TResult

Der transformierte letzte Akkumulatorwert.The transformed final accumulator value.

Exceptions

source oder func oder selector ist null.source or func or selector is null.

Examples

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) eine Akkumulatorfunktion und eine Ergebnis Auswahl anwenden.The following code example demonstrates how to use Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) to apply an accumulator function and a result selector.

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.

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.AsQueryable().Aggregate( _
    "banana", _
    Function(ByVal longest, ByVal fruit) IIf(fruit.Length > longest.Length, fruit, longest), _
    Function(ByVal fruit) fruit.ToUpper() _
)

MsgBox(String.Format( _
    "The fruit with the longest name is {0}.", longestName) _
)

' This code produces the following output:
'
' The fruit with the longest name is PASSIONFRUIT. 

Remarks

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T,TResult> Typen ist.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, der in einen Expression<TDelegate>kompiliert wird.For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Die Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>)-Methode generiert eine MethodCallExpression, die den Aufruf von Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) selbst als konstruierte generische Methode darstellt.The Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) method generates a MethodCallExpression that represents calling Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) itself as a constructed generic method. Anschließend übergibt Sie den MethodCallExpression an die Execute<TResult>(Expression)-Methode der IQueryProvider, die durch die Provider-Eigenschaft des source-Parameters dargestellt wird.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Das Abfrage Verhalten, das auftritt, wenn eine Ausdrucks Baumstruktur ausgeführt wird, die den 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.The query behavior that occurs as a result of executing an expression tree that represents calling Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) depends on the implementation of the type of the source parameter. Das erwartete Verhalten ist, dass die angegebene Funktion, func, auf jeden Wert in der Quell Sequenz angewendet wird und der akkumulierte Wert zurückgegeben wird.The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. Der seed-Parameter wird als Ausgangswert für den akkumulierten Wert verwendet, der dem ersten Parameter in funcentspricht.The seed parameter is used as the seed value for the accumulated value, which corresponds to the first parameter in func. Der letzte akkumulierte Wert wird an selector übermittelt, um den Ergebniswert zu erhalten.The final accumulated value is passed to selector to obtain the result value.

Zum vereinfachen allgemeiner Aggregations Vorgänge umfasst der Satz von Standard Abfrage Operatoren auch zwei Zählmethoden, Count und LongCountsowie vier numerische Aggregations Methoden, nämlich Max, Min, Sumund Average.To simplify common aggregation operations, the set of standard query operators also includes two counting methods, Count and LongCount, and four numeric aggregation methods, namely Max, Min, Sum, and Average.

Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence. Der angegebene Startwert wird als erster Akkumulatorwert verwendet.The specified seed value is used as the initial accumulator value.

public:
generic <typename TSource, typename TAccumulate>
[System::Runtime::CompilerServices::Extension]
 static TAccumulate Aggregate(System::Linq::IQueryable<TSource> ^ source, TAccumulate seed, System::Linq::Expressions::Expression<Func<TAccumulate, TSource, TAccumulate> ^> ^ func);
public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Linq.IQueryable<TSource> source, TAccumulate seed, System.Linq.Expressions.Expression<Func<TAccumulate,TSource,TAccumulate>> func);
static member Aggregate : System.Linq.IQueryable<'Source> * 'Accumulate * System.Linq.Expressions.Expression<Func<'Accumulate, 'Source, 'Accumulate>> -> 'Accumulate
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate) (source As IQueryable(Of TSource), seed As TAccumulate, func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate))) As TAccumulate

Type Parameters

TSource

Der Typ der Elemente von source.The type of the elements of source.

TAccumulate

Der Typ des Akkumulatorwerts.The type of the accumulator value.

Parameters

source
IQueryable<TSource>

Eine Sequenz, die aggregiert werden soll.A sequence to aggregate over.

seed
TAccumulate

Der erste Akkumulatorwert.The initial accumulator value.

func
Expression<Func<TAccumulate,TSource,TAccumulate>>

Eine Akkumulatorfunktion, die für jedes Element aufgerufen werden soll.An accumulator function to invoke on each element.

Returns

TAccumulate

Der letzte Akkumulatorwert.The final accumulator value.

Exceptions

source oder func ist null.source or func is null.

Examples

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) eine Akkumulatorfunktion anwenden, wenn ein Ausgangswert für die Funktion bereitgestellt wird.The following code example demonstrates how to use Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) to apply an accumulator function when a seed value is provided to the function.

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.AsQueryable().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

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.AsQueryable().Aggregate( _
        0, _
        Function(ByVal total, ByVal number) _
            IIf(number Mod 2 = 0, total + 1, total) _
    )

MsgBox(String.Format("The number of even integers is: {0}", numEven))

' This code produces the following output:
'
' The number of even integers is: 6 

Remarks

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T,TResult> Typen ist.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, der in einen Expression<TDelegate>kompiliert wird.For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Die Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)-Methode generiert eine MethodCallExpression, die den Aufruf von Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) selbst als konstruierte generische Methode darstellt.The Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) method generates a MethodCallExpression that represents calling Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) itself as a constructed generic method. Anschließend übergibt Sie den MethodCallExpression an die Execute<TResult>(Expression)-Methode der IQueryProvider, die durch die Provider-Eigenschaft des source-Parameters dargestellt wird.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Das Abfrage Verhalten, das auftritt, wenn eine Ausdrucks Baumstruktur ausgeführt wird, die den Aufruf von Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab.The query behavior that occurs as a result of executing an expression tree that represents calling Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) depends on the implementation of the type of the source parameter. Das erwartete Verhalten ist, dass die angegebene Funktion, func, auf jeden Wert in der Quell Sequenz angewendet wird und der akkumulierte Wert zurückgegeben wird.The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. Der seed-Parameter wird als Ausgangswert für den akkumulierten Wert verwendet, der dem ersten Parameter in funcentspricht.The seed parameter is used as the seed value for the accumulated value, which corresponds to the first parameter in func.

Zum vereinfachen allgemeiner Aggregations Vorgänge umfasst der Satz von Standard Abfrage Operatoren auch zwei Zählmethoden, Count und LongCountsowie vier numerische Aggregations Methoden, nämlich Max, Min, Sumund Average.To simplify common aggregation operations, the set of standard query operators also includes two counting methods, Count and LongCount, and four numeric aggregation methods, namely Max, Min, Sum, and Average.

Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)

Wendet eine Akkumulatorfunktion auf eine Sequenz anApplies an accumulator function over a sequence.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource Aggregate(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TSource, TSource> ^> ^ func);
public static TSource Aggregate<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TSource,TSource>> func);
static member Aggregate : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Source, 'Source>> -> 'Source
<Extension()>
Public Function Aggregate(Of TSource) (source As IQueryable(Of TSource), func As Expression(Of Func(Of TSource, TSource, TSource))) As TSource

Type Parameters

TSource

Der Typ der Elemente von source.The type of the elements of source.

Parameters

source
IQueryable<TSource>

Eine Sequenz, die aggregiert werden soll.A sequence to aggregate over.

func
Expression<Func<TSource,TSource,TSource>>

Eine Akkumulatorfunktion, die auf jedes Element angewendet werden soll.An accumulator function to apply to each element.

Returns

TSource

Der letzte Akkumulatorwert.The final accumulator value.

Exceptions

source oder func ist null.source or func is null.

source enthält keine Elemente.source contains no elements.

Examples

Im folgenden Codebeispiel wird veranschaulicht, wie Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) verwendet wird, um einen Satz aus einem Zeichen folgen Array zu erstellen.The following code example demonstrates how to use Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) to build a sentence from an array of strings.

string sentence = "the quick brown fox jumps over the lazy dog";

// Split the string into individual words.
string[] words = sentence.Split(' ');

// Use Aggregate() to prepend each word to the beginning of the
// new sentence to reverse the word order.
string reversed =
    words.AsQueryable().Aggregate(
    (workingSentence, next) => next + " " + workingSentence
    );

Console.WriteLine(reversed);

// This code produces the following output:
//
// dog lazy the over jumps fox brown quick the

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)

' Use Aggregate() to prepend each word to the beginning of the 
' new sentence to reverse the word order.
Dim reversed As String = _
    words.AsQueryable().Aggregate( _
        Function(ByVal workingSentence, ByVal nextWord) nextWord & " " & workingSentence _
    )

MsgBox(reversed)

' This code produces the following output:
'
' dog lazy the over jumps fox brown quick the

Remarks

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T,TResult> Typen ist.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, der in einen Expression<TDelegate>kompiliert wird.For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Die Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)-Methode generiert eine MethodCallExpression, die den Aufruf von Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) selbst als konstruierte generische Methode darstellt.The Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) method generates a MethodCallExpression that represents calling Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) itself as a constructed generic method. Anschließend übergibt Sie den MethodCallExpression an die Execute<TResult>(Expression)-Methode der IQueryProvider, die durch die Provider-Eigenschaft des source-Parameters dargestellt wird.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Das Abfrage Verhalten, das auftritt, wenn eine Ausdrucks Baumstruktur ausgeführt wird, die den Aufruf von Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab.The query behavior that occurs as a result of executing an expression tree that represents calling Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) depends on the implementation of the type of the source parameter. Das erwartete Verhalten ist, dass die angegebene Funktion, func, auf jeden Wert in der Quell Sequenz angewendet wird und der akkumulierte Wert zurückgegeben wird.The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. Der erste Wert in source wird als Ausgangswert für den akkumulierten Wert verwendet, der dem ersten Parameter in funcentspricht.The first value in source is used as the seed value for the accumulated value, which corresponds to the first parameter in func.

Zum vereinfachen allgemeiner Aggregations Vorgänge umfasst der Satz von Standard Abfrage Operatoren auch zwei Zählmethoden, Count und LongCountsowie vier numerische Aggregations Methoden, nämlich Max, Min, Sumund Average.To simplify common aggregation operations, the set of standard query operators also includes two counting methods, Count and LongCount, and four numeric aggregation methods, namely Max, Min, Sum, and Average.

Applies to