Aracılığıyla paylaş


Enumerable.AggregateBy Yöntem

Tanım

Aşırı Yüklemeler

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

Kaynak:
AggregateBy.cs
Kaynak:
AggregateBy.cs
Kaynak:
AggregateBy.cs

Sonuçları anahtara göre gruplandırarak bir dizi üzerinde bir biriktirici işlevi uygular.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TAccumulate

Biriktirici değerinin türü.

Parametreler

source
IEnumerable<TSource>

Üzerinde IEnumerable<T> toplanmış bir.

keySelector
Func<TSource,TKey>

Her öğenin anahtarını ayıklamak için bir işlev.

seedSelector
Func<TKey,TAccumulate>

İlk akümülatör değeri için bir fabrika.

func
Func<TAccumulate,TSource,TAccumulate>

Her öğede çağrılacak bir akümülatör işlevi.

keyComparer
IEqualityComparer<TKey>

Anahtarları karşılaştırmak için bir IEqualityComparer<T> .

Döndürülenler

IEnumerable<KeyValuePair<TKey,TAccumulate>>

'den sourcetüretilen her anahtara karşılık gelen toplamları içeren bir numaralandırılabilir.

Örnekler

Aşağıdaki örnekte, anahtar başına birden çok değeri hesaplamak için bir çekirdek seçici ile nasıl kullanılacağı AggregateBy gösterilmektedir.

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

Açıklamalar

Bu yöntem, her grup için bir koleksiyon ayırmanın aksine her gruplandırma işleminin tek bir değerde toplandığı yöntemlerle karşılaştırılabilir GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) .

Şunlara uygulanır

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

Kaynak:
AggregateBy.cs
Kaynak:
AggregateBy.cs
Kaynak:
AggregateBy.cs

Sonuçları anahtara göre gruplandırarak bir dizi üzerinde bir biriktirici işlevi uygular.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TAccumulate

Biriktirici değerinin türü.

Parametreler

source
IEnumerable<TSource>

Üzerinde IEnumerable<T> toplanmış bir.

keySelector
Func<TSource,TKey>

Her öğenin anahtarını ayıklamak için bir işlev.

seed
TAccumulate

İlk biriktirici değeri.

func
Func<TAccumulate,TSource,TAccumulate>

Her öğede çağrılacak bir akümülatör işlevi.

keyComparer
IEqualityComparer<TKey>

Anahtarları karşılaştırmak için bir IEqualityComparer<T> .

Döndürülenler

IEnumerable<KeyValuePair<TKey,TAccumulate>>

'den sourcetüretilen her anahtara karşılık gelen toplamları içeren bir numaralandırılabilir.

Örnekler

Aşağıdaki örnek, anahtar başına toplamları hesaplamak için sabit bir tohum değeriyle nasıl kullanılacağını AggregateBy gösterir.

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

Açıklamalar

Bu yöntem, her grup için bir koleksiyon ayırmanın aksine her gruplandırma işleminin tek bir değerde toplandığı yöntemlerle karşılaştırılabilir GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) .

Şunlara uygulanır