Gewusst wie: Gruppieren einer Gruppe (C#-Programmierhandbuch)

Aktualisiert: November 2007

Im folgenden Beispiel wird gezeigt, wie geschachtelte Gruppen in einem LINQ-Abfrageausdruck erstellt werden.

Beispiel

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);
            }
        }
    }
}

Beachten Sie, dass zum Durchlaufen der inneren Elemente einer geschachtelten Gruppe drei geschachtelte foreach-Schleifen erforderlich sind.

Kompilieren des Codes

Dieses Beispiel enthält Verweise auf Objekte, die in der Beispielanwendung in Gewusst wie: Abfragen einer Auflistung von Objekten (C#-Programmierhandbuch) definiert werden. Um diese Methode zu kompilieren und auszuführen, fügen Sie sie in die StudentClass-Klasse dieser Anwendung ein, und fügen Sie ihr von der Main-Methode einen Aufruf hinzu.

Wenn Sie diese Methode an Ihre eigene Anwendung anpassen, beachten Sie, dass LINQ .NET Framework Version 3.5 benötigt und dass das Projekt einen Verweis auf System.Core.dll enthalten und eine Direktive für System.Linq verwenden muss. LINQ-to-SQL-, LINQ-to-XML- und LINQ-to-DataSet-Typen erfordern zusätzliche Usings und Verweise. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen eines LINQ-Projekts.

Siehe auch

Konzepte

LINQ-Abfrageausdrücke (C#-Programmierhandbuch)