Enumerable.CountBy<TSource,TKey> Méthode

Définition

Retourne le nombre d’éléments dans la séquence source regroupée par clé.

public static System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,int>> CountBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? keyComparer = default);
static member CountBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Collections.Generic.KeyValuePair<'Key, int>>
<Extension()>
Public Function CountBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), Optional keyComparer As IEqualityComparer(Of TKey) = Nothing) As IEnumerable(Of KeyValuePair(Of TKey, Integer))

Paramètres de type

TSource

Type d’éléments de source.

TKey

Type de la clé retournée par keySelector.

Paramètres

source
IEnumerable<TSource>

Séquence qui contient des éléments à compter.

keySelector
Func<TSource,TKey>

Fonction permettant d’extraire la clé de chaque élément.

keyComparer
IEqualityComparer<TKey>

À IEqualityComparer<T> comparer aux clés.

Retours

Énumérable contenant les fréquences de chaque occurrence de clé en source.

Exemples

L’exemple de code suivant montre comment calculer CountBy le nombre d’employés de chaque service.

(string Name, int Age, string Department)[] employees =
{
    ("Saly", 23, "IT"),
    ("David", 25, "Sales"),
    ("Mahmoud", 22, "IT"),
    ("Qamar", 22, "HR"),
    ("Sara", 25, "IT"),
    ("John", 26, "HR"),
    ("Jaffar", 32, "Sales")
};

// Count the number of employees per department
var countPerDepartment = employees.CountBy(employee => employee.Department);

foreach (var item in countPerDepartment)
{
    Console.WriteLine($"Department: {item.Key} - Employees Count: {item.Value}");
}

/*
This code produces the following output:

Department: IT - Employees Count: 3
Department: Sales - Employees Count: 2
Department: HR - Employees Count: 2
*/

S’applique à