Enumerable.AggregateBy Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Sobrecargas
| Name | Description |
|---|---|
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Aplica uma função acumuladora sobre uma sequência, agrupando os resultados por chave. |
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Aplica uma função acumuladora sobre uma sequência, agrupando os resultados por chave. |
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)
- Origem:
- AggregateBy.cs
- Origem:
- AggregateBy.cs
- Origem:
- AggregateBy.cs
Aplica uma função acumuladora sobre uma sequência, agrupando os resultados por chave.
public static System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TAccumulate>> AggregateBy<TSource,TKey,TAccumulate>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,TAccumulate> seedSelector, Func<TAccumulate,TSource,TAccumulate> func, System.Collections.Generic.IEqualityComparer<TKey>? keyComparer = default);
static member AggregateBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, 'Accumulate> * Func<'Accumulate, 'Source, 'Accumulate> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Collections.Generic.KeyValuePair<'Key, 'Accumulate>>
<Extension()>
Public Function AggregateBy(Of TSource, TKey, TAccumulate) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), seedSelector As Func(Of TKey, TAccumulate), func As Func(Of TAccumulate, TSource, TAccumulate), Optional keyComparer As IEqualityComparer(Of TKey) = Nothing) As IEnumerable(Of KeyValuePair(Of TKey, TAccumulate))
Parâmetros de Tipo Genérico
- TSource
O tipo dos elementos de source.
- TKey
O tipo da chave devolvido por keySelector.
- TAccumulate
O tipo do valor acumulador.
Parâmetros
- source
- IEnumerable<TSource>
An IEnumerable<T> para agregar.
- keySelector
- Func<TSource,TKey>
Uma função para extrair a chave de cada elemento.
- seedSelector
- Func<TKey,TAccumulate>
Uma fábrica para o valor inicial do acumulador.
- func
- Func<TAccumulate,TSource,TAccumulate>
Uma função acumuladora a ser invocada em cada elemento.
- keyComparer
- IEqualityComparer<TKey>
E IEqualityComparer<T> para comparar chaves.
Devoluções
Um enumerável contendo os agregados correspondentes a cada chave derivada de source.
Exemplos
O exemplo seguinte demonstra como usar AggregateBy com um seletor de sementes para calcular múltiplos valores por chave.
(string Name, string Department, decimal Salary)[] employees =
{
("Ali", "HR", 45000),
("Samer", "Technology", 50000),
("Hamed", "Sales", 75000),
("Lina", "Technology", 65000),
("Omar", "HR", 40000)
};
var result =
employees.AggregateBy(
e => e.Department,
dept => (Total: 0m, Count: 0),
(acc, e) => (acc.Total + e.Salary, acc.Count + 1)
);
foreach (var item in result)
{
Console.WriteLine($"{item.Key}: Total={item.Value.Total}, Count={item.Value.Count}");
}
/*
This code produces the following output:
HR: Total=85000, Count=2
Technology: Total=115000, Count=2
Sales: Total=75000, Count=1
*/
Observações
Este método é comparável aos GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) métodos onde cada agrupamento é agregado num único valor, em vez de alocar uma coleção para cada grupo.
Aplica-se a
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)
- Origem:
- AggregateBy.cs
- Origem:
- AggregateBy.cs
- Origem:
- AggregateBy.cs
Aplica uma função acumuladora sobre uma sequência, agrupando os resultados por chave.
public static System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TAccumulate>> AggregateBy<TSource,TKey,TAccumulate>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func, System.Collections.Generic.IEqualityComparer<TKey>? keyComparer = default);
static member AggregateBy : seq<'Source> * Func<'Source, 'Key> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Collections.Generic.KeyValuePair<'Key, 'Accumulate>>
<Extension()>
Public Function AggregateBy(Of TSource, TKey, TAccumulate) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate), Optional keyComparer As IEqualityComparer(Of TKey) = Nothing) As IEnumerable(Of KeyValuePair(Of TKey, TAccumulate))
Parâmetros de Tipo Genérico
- TSource
O tipo dos elementos de source.
- TKey
O tipo da chave devolvido por keySelector.
- TAccumulate
O tipo do valor acumulador.
Parâmetros
- source
- IEnumerable<TSource>
An IEnumerable<T> para agregar.
- keySelector
- Func<TSource,TKey>
Uma função para extrair a chave de cada elemento.
- seed
- TAccumulate
O valor inicial do acumulador.
- func
- Func<TAccumulate,TSource,TAccumulate>
Uma função acumuladora a ser invocada em cada elemento.
- keyComparer
- IEqualityComparer<TKey>
E IEqualityComparer<T> para comparar chaves.
Devoluções
Um enumerável contendo os agregados correspondentes a cada chave derivada de source.
Exemplos
O exemplo seguinte demonstra como usar AggregateBy com um valor seed constante para calcular totais por chave.
(string Name, string Department, decimal Salary)[] employees =
{
("Ali", "HR", 45000),
("Samer", "Technology", 50000),
("Hamed", "Sales", 75000),
("Lina", "Technology", 65000),
("Omar", "HR", 40000)
};
var totals =
employees.AggregateBy(
e => e.Department,
0m,
(total, e) => total + e.Salary
);
foreach (var item in totals)
{
Console.WriteLine($"{item.Key}: {item.Value}");
}
/*
This code produces the following output:
HR: 85000
Technology: 115000
Sales: 75000
*/
Observações
Este método é comparável aos GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) métodos em que cada agrupamento é agregado num único valor, em vez de alocar uma coleção para cada grupo.