Enumerable.AggregateBy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Överlagringar
| Name | Description |
|---|---|
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Tillämpar en ackumulatorfunktion över en sekvens och grupperar resultat efter nyckel. |
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Tillämpar en ackumulatorfunktion över en sekvens och grupperar resultat efter nyckel. |
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)
- Källa:
- AggregateBy.cs
- Källa:
- AggregateBy.cs
- Källa:
- AggregateBy.cs
Tillämpar en ackumulatorfunktion över en sekvens och grupperar resultat efter nyckel.
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))
Typparametrar
- TSource
Typen av element sourcei .
- TKey
Typ av nyckel som returneras av keySelector.
- TAccumulate
Typ av ackumulatorvärde.
Parametrar
- source
- IEnumerable<TSource>
En IEnumerable<T> att aggregera över.
- keySelector
- Func<TSource,TKey>
En funktion för att extrahera nyckeln för varje element.
- seedSelector
- Func<TKey,TAccumulate>
En fabrik för det initiala ackumulatorvärdet.
- func
- Func<TAccumulate,TSource,TAccumulate>
En ackumulatorfunktion som ska anropas för varje element.
- keyComparer
- IEqualityComparer<TKey>
En IEqualityComparer<T> att jämföra nycklar med.
Returer
En uppräkningsbar som innehåller de aggregeringar som motsvarar varje nyckel som härleds från source.
Exempel
I följande exempel visas hur du använder AggregateBy med en seed-väljare för att beräkna flera värden per nyckel.
(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
*/
Kommentarer
Den här metoden är jämförbar med de GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) metoder där varje gruppering aggregeras till ett enda värde i stället för att allokera en samling för varje grupp.
Gäller för
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)
- Källa:
- AggregateBy.cs
- Källa:
- AggregateBy.cs
- Källa:
- AggregateBy.cs
Tillämpar en ackumulatorfunktion över en sekvens och grupperar resultat efter nyckel.
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))
Typparametrar
- TSource
Typen av element sourcei .
- TKey
Typ av nyckel som returneras av keySelector.
- TAccumulate
Typ av ackumulatorvärde.
Parametrar
- source
- IEnumerable<TSource>
En IEnumerable<T> att aggregera över.
- keySelector
- Func<TSource,TKey>
En funktion för att extrahera nyckeln för varje element.
- seed
- TAccumulate
Det initiala ackumulatorvärdet.
- func
- Func<TAccumulate,TSource,TAccumulate>
En ackumulatorfunktion som ska anropas för varje element.
- keyComparer
- IEqualityComparer<TKey>
En IEqualityComparer<T> att jämföra nycklar med.
Returer
En uppräkningsbar som innehåller de aggregeringar som motsvarar varje nyckel som härleds från source.
Exempel
I följande exempel visas hur du använder AggregateBy med ett konstant seed-värde för att beräkna summor per nyckel.
(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
*/
Kommentarer
Den här metoden är jämförbar med de GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) metoder där varje gruppering aggregeras till ett enda värde i stället för att allokera en samling för varje grupp.