Enumerable.AggregateBy Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Sonuçları anahtara göre gruplandırarak bir dizi üzerinde bir biriktirici işlevi uygular. |
| AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) |
Sonuçları anahtara göre gruplandırarak bir dizi üzerinde bir biriktirici işlevi uygular. |
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
'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
'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>) .