Enumerable.AggregateBy Metod

Definition

Överlagringar

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

IEnumerable<KeyValuePair<TKey,TAccumulate>>

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

IEnumerable<KeyValuePair<TKey,TAccumulate>>

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.

Gäller för