Queryable.Aggregate Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) |
Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor inicial del acumulador y la función especificada se utiliza para seleccionar el valor resultante. |
Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) |
Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor de inicio del acumulador. |
Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) |
Aplica una función de acumulador a una secuencia. |
Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>)
- Source:
- Queryable.cs
- Source:
- Queryable.cs
- Source:
- Queryable.cs
Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor inicial del acumulador y la función especificada se utiliza para seleccionar el valor resultante.
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
Parámetros de tipo
- TSource
Tipo de los elementos de source
.
- TAccumulate
Tipo del valor del acumulador.
- TResult
Tipo del valor resultante.
Parámetros
- source
- IQueryable<TSource>
Secuencia a la que se va a agregar.
- seed
- TAccumulate
Valor de inicio del acumulador.
- func
- Expression<Func<TAccumulate,TSource,TAccumulate>>
Función de acumulador que se va a invocar en cada elemento.
- selector
- Expression<Func<TAccumulate,TResult>>
Función que va a transformar el valor final del acumulador en el valor del resultado.
Devoluciones
El valor final del acumulador transformado.
Excepciones
source
o func
o selector
es null
.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) para aplicar una función de acumulador y un selector de resultados.
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.
Comentarios
Este método tiene al menos un parámetro de tipo Expression<TDelegate> cuyo argumento de tipo es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>
El Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate,
Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,
TResult>>) método genera un MethodCallExpression objeto que representa llamarse Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate,
Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,
TResult>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source
parámetro .
El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate,
Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate,
TResult>>) depende de la implementación del tipo del source
parámetro. El comportamiento esperado es que la función especificada, func
, se aplica a cada valor de la secuencia de origen y se devuelve el valor acumulado. El seed
parámetro se usa como valor de inicialización para el valor acumulado, que corresponde al primer parámetro de func
. El valor acumulado final se pasa para selector
obtener el valor de resultado.
Para simplificar las operaciones de agregación comunes, el conjunto de operadores de consulta estándar también incluye dos métodos de recuento, Count y , y LongCountcuatro métodos de agregación numéricos, es decirMax, , MinSum, y Average.
Se aplica a
Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)
- Source:
- Queryable.cs
- Source:
- Queryable.cs
- Source:
- Queryable.cs
Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor de inicio del acumulador.
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
Parámetros de tipo
- TSource
Tipo de los elementos de source
.
- TAccumulate
Tipo del valor del acumulador.
Parámetros
- source
- IQueryable<TSource>
Secuencia a la que se va a agregar.
- seed
- TAccumulate
Valor de inicio del acumulador.
- func
- Expression<Func<TAccumulate,TSource,TAccumulate>>
Función de acumulador que se va a invocar en cada elemento.
Devoluciones
Valor final del acumulador.
Excepciones
source
o func
es null
.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) para aplicar una función de acumulador cuando se proporciona un valor de inicialización a la función .
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
Comentarios
Este método tiene al menos un parámetro de tipo Expression<TDelegate> cuyo argumento de tipo es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>
El Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) método genera un MethodCallExpression objeto que representa llamarse Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source
parámetro .
El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) depende de la implementación del tipo del source
parámetro. El comportamiento esperado es que la función especificada, func
, se aplica a cada valor de la secuencia de origen y se devuelve el valor acumulado. El seed
parámetro se usa como valor de inicialización para el valor acumulado, que corresponde al primer parámetro de func
.
Para simplificar las operaciones de agregación comunes, el conjunto de operadores de consulta estándar también incluye dos métodos de recuento, Count y , y LongCountcuatro métodos de agregación numéricos, es decirMax, , MinSum, y Average.
Se aplica a
Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)
- Source:
- Queryable.cs
- Source:
- Queryable.cs
- Source:
- Queryable.cs
Aplica una función de acumulador a una secuencia.
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
Parámetros de tipo
- TSource
Tipo de los elementos de source
.
Parámetros
- source
- IQueryable<TSource>
Secuencia a la que se va a agregar.
- func
- Expression<Func<TSource,TSource,TSource>>
Función de acumulador que se va a aplicar a cada elemento.
Devoluciones
Valor final del acumulador.
Excepciones
source
o func
es null
.
source
no contiene ningún elemento.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) para crear una oración a partir de una matriz de cadenas.
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
Comentarios
Este método tiene al menos un parámetro de tipo Expression<TDelegate> cuyo argumento de tipo es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>
El Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) método genera un MethodCallExpression objeto que representa llamarse Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source
parámetro .
El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) depende de la implementación del tipo del source
parámetro. El comportamiento esperado es que la función especificada, func
, se aplica a cada valor de la secuencia de origen y se devuelve el valor acumulado. El primer valor de source
se usa como valor de inicialización para el valor acumulado, que corresponde al primer parámetro de func
.
Para simplificar las operaciones de agregación comunes, el conjunto de operadores de consulta estándar también incluye dos métodos de recuento, Count y , y LongCountcuatro métodos de agregación numéricos, es decirMax, , MinSum, y Average.