Queryable.Aggregate Methode

Definition

Überlädt

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

Typparameter

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.

Parameter

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.

Gibt zurück

TResult

Der transformierte letzte Akkumulatorwert.The transformed final accumulator value.

Ausnahmen

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

Beispiele

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 Ergebnis Auswahl angewendet werden.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.

Hinweise

Diese Methode verfügt über mindestens einen Parameter des Typs, 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 und in einen kompiliert werden Expression<TDelegate> .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 einen, der den MethodCallExpression Aufruf von Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) sich 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 MethodCallExpression an die- Execute<TResult>(Expression) Methode des, das IQueryProvider 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 darstellt, Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>) 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 entspricht func .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 das-Ergebnis übermittelt, um den Ergebniswert abzurufenThe 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, und Count LongCount , sowie vier numerische Aggregations Methoden,,, Max Min Sum und 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.

Gilt für:

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

Typparameter

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.

Parameter

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.

Gibt zurück

TAccumulate

Der letzte Akkumulatorwert.The final accumulator value.

Ausnahmen

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

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie verwendet Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) wird, um eine Akkumulatorfunktion anzuwenden, 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

Hinweise

Diese Methode verfügt über mindestens einen Parameter des Typs, 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 und in einen kompiliert werden Expression<TDelegate> .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 einen, der den MethodCallExpression Aufruf von Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) sich 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 MethodCallExpression an die- Execute<TResult>(Expression) Methode des, das IQueryProvider 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 darstellt, Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) 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 entspricht func .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, und Count LongCount , sowie vier numerische Aggregations Methoden,,, Max Min Sum und 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.

Gilt für:

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

Typparameter

TSource

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

Parameter

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.

Gibt zurück

TSource

Der letzte Akkumulatorwert.The final accumulator value.

Ausnahmen

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

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

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie verwendet wird, Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) 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

Hinweise

Diese Methode verfügt über mindestens einen Parameter des Typs, 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 und in einen kompiliert werden Expression<TDelegate> .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 einen, der den MethodCallExpression Aufruf von Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) sich 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 MethodCallExpression an die- Execute<TResult>(Expression) Methode des, das IQueryProvider 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 darstellt, Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) 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 entspricht func .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, und Count LongCount , sowie vier numerische Aggregations Methoden,,, Max Min Sum und 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.

Gilt für: