GroupBy(TSource, TKey, TElement, TResult) Méthode (IEnumerable(TSource), Func(TSource, TKey), Func(TSource, TElement), Func(TKey, IEnumerable(TElement), TResult))
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

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

 

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.Les éléments de chaque groupe sont projetés à l'aide d'une fonction spécifique.

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

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

Paramètres

source

IEnumerable<T> dont les éléments doivent être regroupés.

keySelector

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

elementSelector

Fonction permettant de mapper chaque élément source à un élément de IGrouping<TKey, TElement>.

resultSelector

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

Valeur de retour

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

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

Type des éléments de source.

TKey

Type de clé retournée par keySelector.

TElement

Type des éléments de chaque IGrouping<TKey, TElement>.

TResult

Type de la valeur de résultat retournée par resultSelector.

Dans une syntaxe d'expression de requête, une clause group by (Visual C#) ou Group By Into (Visual Basic) se traduit en appel de GroupBy.

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

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

public static void GroupByEx4()
{
    // 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.Age values by the Math.Floor of the 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),
        pet => pet.Age,
        (baseAge, ages) => new
        {
            Key = baseAge,
            Count = ages.Count(),
            Min = ages.Min(),
            Max = ages.Max()
        });

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

Universal Windows Platform
Disponible depuis 4.5
.NET Framework
Disponible depuis 3.5
Portable Class Library
Pris en charge dans : portable .NET platforms
Silverlight
Disponible depuis 2.0
Windows Phone Silverlight
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher:
© 2016 Microsoft