Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Enumerable.GroupBy<TSource, TKey, TResult> méthode (IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>)

 

Date de publication : novembre 2016

Regroupe les éléments d'une séquence selon la fonction de sélection de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de la clé correspondante.

Espace de noms:   System.Linq
Assembly:  System.Core (dans System.Core.dll)

public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TKey, IEnumerable<TSource>, TResult> resultSelector
)

Paramètres

source
Type: System.Collections.Generic.IEnumerable<TSource>

Une IEnumerable<T> dont regrouper les éléments.

keySelector
Type: System.Func<TSource, TKey>

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

resultSelector
Type: System.Func<TKey, IEnumerable<TSource>, TResult>

Fonction permettant de créer une valeur de résultat à partir de chaque groupe.

Valeur de retour

Type: System.Collections.Generic.IEnumerable<TResult>

Une collection d’éléments de type TResult où chaque élément représente une projection sur un groupe et sa clé.

Paramètres de type

TSource

Le type des éléments de source.

TKey

Le type de la clé retournée par keySelector.

TResult

Le type de la valeur de résultat retourné par resultSelector.

Dans la syntaxe d’expression de requête, un group by (Visual C#) ou Group By Into (Visual Basic) clause se traduit par un appel à GroupBy.

L’exemple de code suivant montre comment utiliser GroupBy<TSource, TKey, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>) pour regrouper les éléments d’une séquence et projeter une séquence de résultats de type TResult.

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx3()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet objects by the Math.Floor of their age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.GroupBy(
        pet => Math.Floor(pet.Age),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 3.5
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: