Queryable.Aggregate Method

定義

オーバーロード

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

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence. 指定したシード値は最初のアキュムレータ値として使用され、指定した関数は結果値の選択に使用されます。 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>>)

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence. 指定されたシード値が最初のアキュムレータ値として使用されます。 The specified seed value is used as the initial accumulator value.

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

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence.

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

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence. 指定したシード値は最初のアキュムレータ値として使用され、指定した関数は結果値の選択に使用されます。 The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value.

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);
型パラメーター
TSource

要素の型ソースします。 The type of the elements of source.

TAccumulate

アキュムレータ値の型。 The type of the accumulator value.

TResult

結果の値の型。 The type of the resulting value.

パラメーター
source
IQueryable<TSource>

集計対象のシーケンス。 A sequence to aggregate over.

seed

最初のアキュムレータ値。 The initial accumulator value.

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

各要素に対して呼び出すアキュムレータ関数。 An accumulator function to invoke on each element.

selector
Expression<Func<TAccumulate,TResult>>

最終的なアキュムレータ値を結果値に変換する関数。 A function to transform the final accumulator value into the result value.

戻り値

変換された最終的なアキュムレータ値。 The transformed final accumulator value.

例外

sourcefunc、または selector は、null です。 source or func or selector is null.

次のコード例は、使用する方法を示しますAggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>)アキュムレータ関数と結果のセレクターを適用します。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. 

注釈

このメソッドは、少なくとも 1 つのパラメーター型のExpression<TDelegate>型引数は、のいずれか、Func<T,TResult>型。This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. ラムダ式で、これらのパラメーターを渡すことができますにコンパイルされると、Expression<TDelegate>します。For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>)メソッドを生成、MethodCallExpression呼び出しを表すAggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>)として構築されたジェネリック メソッド自体。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. これは、後、渡します、MethodCallExpressionExecute<TResult>(Expression)のメソッド、IQueryProviderによって表される、Providerのプロパティ、sourceパラメーター。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

呼び出し元を表す式ツリーを実行した結果として発生するクエリの動作Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,TResult>>)の型の実装によって異なります、sourceパラメーター。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. 想定される動作は、指定された関数をfunc、ソース シーケンスと、累積の各値に適用される値が返されます。The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. seedパラメーターは、最初のパラメーターに対応する累積値のシード値として使用されますfuncします。The seed parameter is used as the seed value for the accumulated value, which corresponds to the first parameter in func. 最後の累積値が渡されるselector結果の値を取得します。The final accumulated value is passed to selector to obtain the result value.

一般的な集計操作を簡素化する標準クエリ演算子のセットも含まれています、2 つのカウント方法CountLongCount、および 4 つの数値の集計メソッドでは、namely MaxMinSum、および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>>)

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence. 指定されたシード値が最初のアキュムレータ値として使用されます。 The specified seed value is used as the initial accumulator value.

public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Linq.IQueryable<TSource> source, TAccumulate seed, System.Linq.Expressions.Expression<Func<TAccumulate,TSource,TAccumulate>> func);
型パラメーター
TSource

要素の型ソースします。 The type of the elements of source.

TAccumulate

アキュムレータ値の型。 The type of the accumulator value.

パラメーター
source
IQueryable<TSource>

集計対象のシーケンス。 A sequence to aggregate over.

seed

最初のアキュムレータ値。 The initial accumulator value.

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

各要素に対して呼び出すアキュムレータ関数。 An accumulator function to invoke on each element.

戻り値

最終的なアキュムレータ値。 The final accumulator value.

例外

source または funcnull です。 source or func is null.

次のコード例は、使用する方法を示しますAggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)シード値が関数に提供されるアキュムレータ関数を適用します。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 

注釈

このメソッドは、少なくとも 1 つのパラメーター型のExpression<TDelegate>型引数は、のいずれか、Func<T,TResult>型。This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. ラムダ式で、これらのパラメーターを渡すことができますにコンパイルされると、Expression<TDelegate>します。For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)メソッドを生成、MethodCallExpression呼び出しを表すAggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)として構築されたジェネリック メソッド自体。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. これは、後、渡します、MethodCallExpressionExecute<TResult>(Expression)のメソッド、IQueryProviderによって表される、Providerのプロパティ、sourceパラメーター。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

呼び出し元を表す式ツリーを実行した結果として発生するクエリの動作Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)の型の実装によって異なります、sourceパラメーター。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. 想定される動作は、指定された関数をfunc、ソース シーケンスと、累積の各値に適用される値が返されます。The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. seedパラメーターは、最初のパラメーターに対応する累積値のシード値として使用されますfuncします。The seed parameter is used as the seed value for the accumulated value, which corresponds to the first parameter in func.

一般的な集計操作を簡素化する標準クエリ演算子のセットも含まれています、2 つのカウント方法CountLongCount、および 4 つの数値の集計メソッドでは、namely MaxMinSum、および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>>)

シーケンスにアキュムレータ関数を適用します。 Applies an accumulator function over a sequence.

public static TSource Aggregate<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TSource,TSource>> func);
型パラメーター
TSource

要素の型ソースします。 The type of the elements of source.

パラメーター
source
IQueryable<TSource>

集計対象のシーケンス。 A sequence to aggregate over.

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

各要素に適用するアキュムレータ関数。 An accumulator function to apply to each element.

戻り値

最終的なアキュムレータ値。 The final accumulator value.

例外

source または funcnull です。 source or func is null.

source に要素が含まれていません。 source contains no elements.

次のコード例は、使用する方法を示しますAggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)文字列の配列から文を構築します。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

注釈

このメソッドは、少なくとも 1 つのパラメーター型のExpression<TDelegate>型引数は、のいずれか、Func<T,TResult>型。This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. ラムダ式で、これらのパラメーターを渡すことができますにコンパイルされると、Expression<TDelegate>します。For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)メソッドを生成、MethodCallExpression呼び出しを表すAggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)として構築されたジェネリック メソッド自体。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. これは、後、渡します、MethodCallExpressionExecute<TResult>(Expression)のメソッド、IQueryProviderによって表される、Providerのプロパティ、sourceパラメーター。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

呼び出し元を表す式ツリーを実行した結果として発生するクエリの動作Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)の型の実装によって異なります、sourceパラメーター。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. 想定される動作は、指定された関数をfunc、ソース シーケンスと、累積の各値に適用される値が返されます。The expected behavior is that the specified function, func, is applied to each value in the source sequence and the accumulated value is returned. 最初の値sourceの最初のパラメーターに対応する累積値のシード値として使用されますfuncします。The first value in source is used as the seed value for the accumulated value, which corresponds to the first parameter in func.

一般的な集計操作を簡素化する標準クエリ演算子のセットも含まれています、2 つのカウント方法CountLongCount、および 4 つの数値の集計メソッドでは、namely MaxMinSum、および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.

適用対象