Enumerable.AggregateBy Methode

Definitie

Overloads

Name Description
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Hiermee past u een accumulatorfunctie toe op een reeks, waarbij resultaten op sleutel worden gegroepeerd.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Hiermee past u een accumulatorfunctie toe op een reeks, waarbij resultaten op sleutel worden gegroepeerd.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Bron:
AggregateBy.cs
Bron:
AggregateBy.cs
Bron:
AggregateBy.cs

Hiermee past u een accumulatorfunctie toe op een reeks, waarbij resultaten op sleutel worden gegroepeerd.

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))

Type parameters

TSource

Het type van de elementen van source.

TKey

Het type sleutel dat wordt geretourneerd door keySelector.

TAccumulate

Het type accumulatorwaarde.

Parameters

source
IEnumerable<TSource>

Een IEnumerable<T> om samen te voegen.

keySelector
Func<TSource,TKey>

Een functie om de sleutel voor elk element te extraheren.

seedSelector
Func<TKey,TAccumulate>

Een fabriek voor de initiële accumulatorwaarde.

func
Func<TAccumulate,TSource,TAccumulate>

Een accumulatorfunctie die op elk element moet worden aangeroepen.

keyComparer
IEqualityComparer<TKey>

Een IEqualityComparer<T> om sleutels te vergelijken met.

Retouren

IEnumerable<KeyValuePair<TKey,TAccumulate>>

Een opsomming die de aggregaties bevat die overeenkomen met elke sleutel die is afgeleid van source.

Voorbeelden

In het volgende voorbeeld ziet u hoe AggregateBy u met een seedselector meerdere waarden per sleutel kunt berekenen.

(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
*/

Opmerkingen

Deze methode is vergelijkbaar met de GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) methoden waarbij elke groepering wordt samengevoegd in één waarde in plaats van een verzameling toe te wijzen voor elke groep.

Van toepassing op

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Bron:
AggregateBy.cs
Bron:
AggregateBy.cs
Bron:
AggregateBy.cs

Hiermee past u een accumulatorfunctie toe op een reeks, waarbij resultaten op sleutel worden gegroepeerd.

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))

Type parameters

TSource

Het type van de elementen van source.

TKey

Het type sleutel dat wordt geretourneerd door keySelector.

TAccumulate

Het type accumulatorwaarde.

Parameters

source
IEnumerable<TSource>

Een IEnumerable<T> om samen te voegen.

keySelector
Func<TSource,TKey>

Een functie om de sleutel voor elk element te extraheren.

seed
TAccumulate

De initiële accumulatorwaarde.

func
Func<TAccumulate,TSource,TAccumulate>

Een accumulatorfunctie die op elk element moet worden aangeroepen.

keyComparer
IEqualityComparer<TKey>

Een IEqualityComparer<T> om sleutels te vergelijken met.

Retouren

IEnumerable<KeyValuePair<TKey,TAccumulate>>

Een opsomming die de aggregaties bevat die overeenkomen met elke sleutel die is afgeleid van source.

Voorbeelden

In het volgende voorbeeld ziet u hoe AggregateBy u met een constante seed-waarde totalen per sleutel kunt berekenen.

(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
*/

Opmerkingen

Deze methode is vergelijkbaar met de GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) methoden waarbij elke groepering wordt samengevoegd in één waarde in plaats van een verzameling toe te wijzen voor elke groep.

Van toepassing op