Condividi tramite


Procedura: raggruppare un gruppo (Guida per programmatori C#)

Aggiornamento: novembre 2007

Nell'esempio seguente viene illustrato come creare gruppi nidificati in un'espressione di query LINQ.

Esempio

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

Si noti che sono necessari tre cicli foreach nidificati per scorrere gli elementi interni di un gruppo nidificato.

Compilazione del codice

In questo esempio sono contenuti i riferimenti a oggetti definiti nell'applicazione di esempio in Procedura: eseguire una query su un insieme di oggetti (Guida per programmatori C#). Per compilare ed eseguire questo metodo, incollarlo nella classe StudentClass in tale applicazione e aggiungervi una chiamata dal metodo 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. Per ulteriori informazioni, vedere la classe Procedura: creare un progetto LINQ.

Vedere anche

Concetti

Espressioni query LINQ (Guida per programmatori C#)