Como: Um agrupar (guia de programação translation from VPE for Csharp) de agrupar

O exemplo a seguir mostra como criar grupos aninhados em um LINQ expressão de consulta.

Exemplo

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

Observe que três aninhados foreach são necessários loops para iterar sobre elementos internos de um agrupar aninhado.

Compilando o código

Este exemplo contém referências a objetos que são definidos no aplicativo de exemplo em Como: consulta uma coleção de objetos (guia de programação translation from VPE for Csharp). Para compilar e executar esse método, cole o StudentClass classe nesse aplicativo e adicione uma telefonar a partir do Main método.

Ao adaptar este método para o seu próprio aplicativo, lembre-se de que o LINQ requer a versão 3.5 do .NET Framework, e o projeto deve conter uma referência a sistema.Core.dll e o uso de uma diretriz para sistema.LINQ. O LINQ to SQL, LINQ to XML e LINQ to DataSet tipos requerem usos adicionais e referências.Para obter mais informações, consulte Como: Criar um projeto LINQ.

Consulte também

Conceitos

Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)