Queryable.Aggregate Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) |
Применяет к последовательности агрегатную функцию. Указанное начальное значение служит исходным значением для агрегатной операции, а указанная функция используется для выбора результирующего значения. |
Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) |
Применяет к последовательности агрегатную функцию. Указанное начальное значение используется в качестве исходного значения агрегатной операции. |
Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) |
Применяет к последовательности агрегатную функцию. |
Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>)
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
Применяет к последовательности агрегатную функцию. Указанное начальное значение служит исходным значением для агрегатной операции, а указанная функция используется для выбора результирующего значения.
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
Параметры типа
- TSource
Тип элементов source
.
- TAccumulate
Тип агрегатного значения.
- TResult
Тип результирующего значения.
Параметры
- source
- IQueryable<TSource>
Последовательность, для которой выполняется статистическая операция.
- seed
- TAccumulate
Начальное агрегатное значение.
- func
- Expression<Func<TAccumulate,TSource,TAccumulate>>
Агрегатная функция, вызываемая для каждого элемента.
- selector
- Expression<Func<TAccumulate,TResult>>
Функция, преобразующая конечное агрегатное значение в результирующее значение.
Возвращаемое значение
Преобразованное конечное агрегатное значение.
Исключения
Параметр source
, func
или selector
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) для применения функции аккумуляторов и селектора результатов.
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.
Комментарии
Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано 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>>) как сконструированный универсальный метод. Затем он передает MethodCallExpressionExecute<TResult>(Expression) в метод объекта , представленный IQueryProvider свойством Providersource
параметра .
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate,
Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,
TResult>>) , зависит от реализации типа source
параметра. Ожидаемое поведение заключается в том, func
что указанная функция , применяется к каждому значению в исходной последовательности и возвращается накопленные значения. Параметр seed
используется в качестве начального значения для накопленных значений, что соответствует первому параметру в func
. Окончательное накопленное значение передается в selector
для получения результирующих значений.
Чтобы упростить общие операции агрегирования, набор стандартных операторов запросов также включает два метода Count подсчета и LongCount, а также четыре числовых метода агрегирования, а именно Max, Min, Sumи Average.
Применяется к
Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
Применяет к последовательности агрегатную функцию. Указанное начальное значение используется в качестве исходного значения агрегатной операции.
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
Параметры типа
- TSource
Тип элементов source
.
- TAccumulate
Тип агрегатного значения.
Параметры
- source
- IQueryable<TSource>
Последовательность, для которой выполняется статистическая операция.
- seed
- TAccumulate
Начальное агрегатное значение.
- func
- Expression<Func<TAccumulate,TSource,TAccumulate>>
Агрегатная функция, вызываемая для каждого элемента.
Возвращаемое значение
Конечное агрегатное значение.
Исключения
Параметр source
или func
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) для применения функции аккумуляторов при предоставлении начального значения функции.
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
Комментарии
Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано 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>>) как сконструированный универсальный метод. Затем он передает MethodCallExpressionExecute<TResult>(Expression) в метод объекта , представленный IQueryProvider свойством Providersource
параметра .
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) , зависит от реализации типа source
параметра. Ожидаемое поведение заключается в том, func
что указанная функция , применяется к каждому значению в исходной последовательности и возвращается накопленные значения. Параметр seed
используется в качестве начального значения для накопленных значений, что соответствует первому параметру в func
.
Чтобы упростить общие операции агрегирования, набор стандартных операторов запросов также включает два метода Count подсчета и LongCount, а также четыре числовых метода агрегирования, а именно Max, Min, Sumи Average.
Применяется к
Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
Применяет к последовательности агрегатную функцию.
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
Параметры типа
- TSource
Тип элементов source
.
Параметры
- source
- IQueryable<TSource>
Последовательность, для которой выполняется статистическая операция.
- func
- Expression<Func<TSource,TSource,TSource>>
Агрегатная функция, применяемая к каждому элементу.
Возвращаемое значение
Конечное агрегатное значение.
Исключения
Параметр source
или func
имеет значение null
.
Последовательность source
не содержит элементов.
Примеры
В следующем примере кода показано, как использовать Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) для построения предложения из массива строк.
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
Комментарии
Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано Expression<TDelegate>в .
Метод Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) создает объект , MethodCallExpression представляющий вызов Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) как сконструированный универсальный метод. Затем он передает MethodCallExpressionExecute<TResult>(Expression) в метод объекта , представленный IQueryProvider свойством Providersource
параметра .
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) , зависит от реализации типа source
параметра. Ожидаемое поведение заключается в том, func
что указанная функция , применяется к каждому значению в исходной последовательности и возвращается накопленные значения. Первое значение в используется в source
качестве начального значения для накопленных значений, что соответствует первому параметру в func
.
Чтобы упростить общие операции агрегирования, набор стандартных операторов запросов также включает два метода Count подсчета и LongCount, а также четыре числовых метода агрегирования, а именно Max, Min, Sumи Average.