Enumerable.AggregateBy Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
| Nome | Description |
|---|---|
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Aplica uma função de acumulador em uma sequência, agrupando resultados por chave. |
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Aplica uma função de acumulador em uma sequência, agrupando 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 de acumulador em uma sequência, agrupando 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
- TSource
O tipo dos elementos de source.
- TKey
O tipo da chave retornada por keySelector.
- TAccumulate
O tipo do valor acumulador.
Parâmetros
- source
- IEnumerable<TSource>
Um IEnumerable<T> para agregar.
- keySelector
- Func<TSource,TKey>
Uma função para extrair a chave para cada elemento.
- seedSelector
- Func<TKey,TAccumulate>
Uma fábrica para o valor inicial do acumulador.
- func
- Func<TAccumulate,TSource,TAccumulate>
Uma função de acumulador a ser invocada em cada elemento.
- keyComparer
- IEqualityComparer<TKey>
Uma IEqualityComparer<T> com a qual comparar chaves.
Retornos
Um enumerável que contém as agregações correspondentes a cada chave derivada de source.
Exemplos
O exemplo a seguir demonstra como usar AggregateBy com um seletor de sementes para calcular vários valores por chave.
public static void AggregateBySeedSelectorExample()
{
(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
*/
}
Comentários
Esse método é comparável aos GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) métodos em que cada agrupamento é agregado em um ú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 de acumulador em uma sequência, agrupando 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
- TSource
O tipo dos elementos de source.
- TKey
O tipo da chave retornada por keySelector.
- TAccumulate
O tipo do valor acumulador.
Parâmetros
- source
- IEnumerable<TSource>
Um IEnumerable<T> para agregar.
- keySelector
- Func<TSource,TKey>
Uma função para extrair a chave para cada elemento.
- seed
- TAccumulate
O valor inicial do acumulador.
- func
- Func<TAccumulate,TSource,TAccumulate>
Uma função de acumulador a ser invocada em cada elemento.
- keyComparer
- IEqualityComparer<TKey>
Uma IEqualityComparer<T> com a qual comparar chaves.
Retornos
Um enumerável que contém as agregações correspondentes a cada chave derivada de source.
Exemplos
O exemplo a seguir demonstra como usar AggregateBy com um valor de semente constante para calcular totais por chave.
public static void AggregateBySeedExample()
{
(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
*/
}
Comentários
Esse método é comparável aos GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) métodos em que cada agrupamento está sendo agregado em um único valor em vez de alocar uma coleção para cada grupo.