Enumerable.Aggregate Enumerable.Aggregate Enumerable.Aggregate Enumerable.Aggregate Method

Definición

Sobrecargas

Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence. 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.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>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence. El valor de inicialización especificado se utiliza como valor de inicio del acumulador.The specified seed value is used as the initial accumulator value.

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence.

Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence. 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.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::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func, Func<TAccumulate, TResult> ^ resultSelector);
public static TResult Aggregate<TSource,TAccumulate,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func, Func<TAccumulate,TResult> resultSelector);
static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> * Func<'Accumulate, 'Result> -> 'Result
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate, TResult) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate), resultSelector As Func(Of TAccumulate, TResult)) As TResult

Parámetros de tipo

TSource

Tipo de los elementos de source.The type of the elements of source.

TAccumulate

Tipo del valor del acumulador.The type of the accumulator value.

TResult

Tipo del valor resultante.The type of the resulting value.

Parámetros

source
IEnumerable<TSource>

Objeto IEnumerable<T> en el que se van a agregar elementos.An IEnumerable<T> to aggregate over.

seed
TAccumulate TAccumulate TAccumulate TAccumulate

Valor de inicio del acumulador.The initial accumulator value.

func
Func<TAccumulate,TSource,TAccumulate>

Función de acumulador que se va a invocar en cada elemento.An accumulator function to be invoked on each element.

resultSelector
Func<TAccumulate,TResult>

Función que va a transformar el valor final del acumulador en el valor del resultado.A function to transform the final accumulator value into the result value.

Devoluciones

TResult TResult TResult TResult

El valor final del acumulador transformado.The transformed final accumulator value.

Excepciones

source o func o resultSelector es null.source or func or resultSelector is null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Aggregate para aplicar una función de acumulador y un selector de resultados.The following code example demonstrates how to use Aggregate 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.Aggregate("banana",
                    (longest, next) =>
                        next.Length > longest.Length ? next : longest,
    // Return the final result as an upper case 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.
Sub AggregateEx3()
    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.Aggregate("banana",
                     Function(ByVal longest, ByVal fruit) _
                         IIf(fruit.Length > longest.Length, fruit, longest),
                     Function(ByVal fruit) fruit.ToUpper())

    ' Display the output.
    MsgBox("The fruit with the longest name is " & longestName)
End Sub

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

Comentarios

El Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) método simplifica el proceso de realizar un cálculo sobre una secuencia de valores.The Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) method makes it simple to perform a calculation over a sequence of values. Este método funciona mediante una llamada a func una vez para cada elemento de source.This method works by calling func one time for each element in source. Cada vez que func se llama, Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) pasa el elemento de la secuencia y un valor agregado (como el primer argumento func).Each time func is called, Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) passes both the element from the sequence and an aggregated value (as the first argument to func). El valor de la seed parámetro se utiliza como valor agregado inicial.The value of the seed parameter is used as the initial aggregate value. El resultado de func reemplaza el valor agregado anterior.The result of func replaces the previous aggregated value. El resultado final de func se pasa a resultSelector para obtener el resultado final de Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>).The final result of func is passed to resultSelector to obtain the final result of Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>).

Para simplificar las operaciones comunes de agregación, los operadores de consulta estándar también incluyen un método de recuento de uso general, County cuatro métodos de agregación numérico, es decir, Min, Max, Sum, y Average.To simplify common aggregation operations, the standard query operators also include a general purpose count method, Count, and four numeric aggregation methods, namely Min, Max, Sum, and Average.

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence. El valor de inicialización especificado se utiliza como valor de inicio del acumulador.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::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func);
public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func);
static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> -> 'Accumulate
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate)) As TAccumulate

Parámetros de tipo

TSource

Tipo de los elementos de source.The type of the elements of source.

TAccumulate

Tipo del valor del acumulador.The type of the accumulator value.

Parámetros

source
IEnumerable<TSource>

Objeto IEnumerable<T> en el que se van a agregar elementos.An IEnumerable<T> to aggregate over.

seed
TAccumulate TAccumulate TAccumulate TAccumulate

Valor de inicio del acumulador.The initial accumulator value.

func
Func<TAccumulate,TSource,TAccumulate>

Función de acumulador que se va a invocar en cada elemento.An accumulator function to be invoked on each element.

Devoluciones

TAccumulate TAccumulate TAccumulate TAccumulate

Valor final del acumulador.The final accumulator value.

Excepciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Aggregate para aplicar una función de acumulador y usar un valor de inicialización.The following code example demonstrates how to use Aggregate to apply an accumulator function and use a seed value.

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.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
Sub AggregateEx2()
    ' Create an array of Integers.
    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.Aggregate(0,
                   Function(ByVal total, ByVal number) _
                       IIf(number Mod 2 = 0, total + 1, total))

    ' Display the output.
    MsgBox("The number of even integers is " & numEven)
End Sub

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

Comentarios

El Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) método simplifica el proceso de realizar un cálculo sobre una secuencia de valores.The Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) method makes it simple to perform a calculation over a sequence of values. Este método funciona mediante una llamada a func una vez para cada elemento de source.This method works by calling func one time for each element in source. Cada vez que func se llama, Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) pasa el elemento de la secuencia y un valor agregado (como el primer argumento func).Each time func is called, Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) passes both the element from the sequence and an aggregated value (as the first argument to func). El valor de la seed parámetro se utiliza como valor agregado inicial.The value of the seed parameter is used as the initial aggregate value. El resultado de func reemplaza el valor agregado anterior.The result of func replaces the previous aggregated value. Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) Devuelve el resultado final de func.Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) returns the final result of func.

Para simplificar las operaciones comunes de agregación, los operadores de consulta estándar también incluyen un método de recuento de uso general, County cuatro métodos de agregación numérico, es decir, Min, Max, Sum, y Average.To simplify common aggregation operations, the standard query operators also include a general purpose count method, Count, and four numeric aggregation methods, namely Min, Max, Sum, and Average.

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Aplica una función de acumulador a una secuencia.Applies an accumulator function over a sequence.

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

Parámetros de tipo

TSource

Tipo de los elementos de source.The type of the elements of source.

Parámetros

source
IEnumerable<TSource>

Objeto IEnumerable<T> en el que se van a agregar elementos.An IEnumerable<T> to aggregate over.

func
Func<TSource,TSource,TSource>

Función de acumulador que se va a invocar en cada elemento.An accumulator function to be invoked on each element.

Devoluciones

TSource TSource TSource TSource

Valor final del acumulador.The final accumulator value.

Excepciones

source no contiene ningún elemento.source contains no elements.

Ejemplos

El código siguiente muestra cómo se invierte el orden de las palabras en una cadena mediante el uso de Aggregate.The following code example demonstrates how to reverse the order of words in a string by using Aggregate.

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

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

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

Console.WriteLine(reversed);

// This code produces the following output:
//
// dog lazy the over jumps fox brown quick the
Sub AggregateEx1()
    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)
    ' Prepend each word to the beginning of the new sentence to reverse the word order.
    Dim reversed As String =
    words.Aggregate(Function(ByVal current, ByVal word) word & " " & current)

    ' Display the output.
    MsgBox(reversed)
End Sub

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

Comentarios

El Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) método simplifica el proceso de realizar un cálculo sobre una secuencia de valores.The Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) method makes it simple to perform a calculation over a sequence of values. Este método funciona mediante una llamada a func una vez para cada elemento de source excepto la primera de ellas.This method works by calling func one time for each element in source except the first one. Cada vez que func se llama, Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) pasa el elemento de la secuencia y un valor agregado (como el primer argumento func).Each time func is called, Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) passes both the element from the sequence and an aggregated value (as the first argument to func). El primer elemento de source se utiliza como valor agregado inicial.The first element of source is used as the initial aggregate value. El resultado de func reemplaza el valor agregado anterior.The result of func replaces the previous aggregated value. Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) Devuelve el resultado final de func.Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) returns the final result of func.

Esta sobrecarga de la Aggregate método no es adecuado para todos los casos porque utiliza el primer elemento de source como el valor inicial de agregado.This overload of the Aggregate method isn't suitable for all cases because it uses the first element of source as the initial aggregate value. Debe elegir otra sobrecarga si el valor devuelto debe incluir solo los elementos de source que cumplan una determinada condición.You should choose another overload if the return value should include only the elements of source that meet a certain condition. Por ejemplo, esta sobrecarga no es confiable si desea calcular la suma de los números pares en source.For example, this overload isn't reliable if you want to calculate the sum of the even numbers in source. El resultado será incorrecto si el primer elemento es impar, en lugar de incluso.The result will be incorrect if the first element is odd instead of even.

Para simplificar las operaciones comunes de agregación, los operadores de consulta estándar también incluyen un método de recuento de uso general, County cuatro métodos de agregación numérico, es decir, Min, Max, Sum, y Average.To simplify common aggregation operations, the standard query operators also include a general purpose count method, Count, and four numeric aggregation methods, namely Min, Max, Sum, and Average.

Se aplica a