Partager via


Comment : regrouper un groupe (Guide de programmation C#)

Mise à jour : novembre 2007

L'exemple suivant indique comment créer des groupes imbriqués dans une expression de requête LINQ.

Exemple

private static void QueryNestedGroups()
{
    var queryNestedGroups =
        from student in students
        group student by student.Year into newGroup1
        from newGroup2 in
            (from student in newGroup1
             group student by student.LastName)
        group newGroup2 by newGroup1.Key;

    // Three nested foreach loops are required to iterate 
    // over all elements of a grouped group. Hover the mouse 
    // cursor over the iteration variables to see their actual type.
    foreach (var outerGroup in queryNestedGroups)
    {
        Console.WriteLine("DataClass.Student Level = {0}", outerGroup.Key);
        foreach (var innerGroup in outerGroup)
        {
            Console.WriteLine("\tNames that begin with: {0}", innerGroup.Key);
            foreach (var innerGroupElement in innerGroup)
            {
                Console.WriteLine("\t\t{0} {1}", innerGroupElement.LastName, innerGroupElement.FirstName);
            }
        }
    }
}

Notez que trois boucles foreach imbriquées sont requises pour parcourir les éléments internes d'un groupe imbriqué.

Compilation du code

Cet exemple contient des références aux objets définis dans l'exemple d'application dans Comment : interroger une collection d'objets (Guide de programmation C#). Pour compiler et exécuter cette méthode, collez-la dans la classe StudentClass de cette application et ajoutez-lui un appel de la méthode Main.

When you adapt this method to your own application, remember that LINQ requires version 3.5 of the .NET Framework, and the project must contain a reference to System.Core.dll and a using directive for System.Linq. LINQ to SQL, LINQ to XML and LINQ to DataSet types require additional usings and references. Pour plus d'informations, consultez Comment : créer un projet LINQ.

Voir aussi

Concepts

Expressions de requête LINQ (Guide de programmation C#)