Como: Executar uma subconsulta em uma operação de agrupamento (guia de programação translation from VPE for Csharp)

Este tópico mostra duas maneiras diferentes de criar uma consulta que classifica os dados de fonte em grupos e, em seguida, executa uma subconsulta em cada agrupar individualmente.A técnica básica em cada exemplo é agrupar os elementos de fonte usando um continuação named newGroupe gerar uma subconsulta contra nova newGroup. Esta subconsulta é executada em relação a cada novo agrupar criado por consulta externa.Observe que, nesse exemplo específico da saída final, não é um agrupar, mas uma simples sequência de tipos anônimo.

Para obter mais informações sobre como agrupar, consulte cláusula de agrupar (translation from VPE for Csharp Reference).

Para obter mais informações sobre a continuação, consulte em (translation from VPE for Csharp Reference). O exemplo a seguir usa uma estrutura de dados na memória sistema autônomo a fonte de dados, mas sistema autônomo mesmos princípios aplicar para qualquer tipo de LINQ fonte de dados.

Exemplo

private static void QueryMax()
{
    var queryGroupMax =
        from student in students
        group student by student.Year into studentGroup
        select new
        {
            Level = studentGroup.Key,
            HighestScore =
            (from student2 in studentGroup
             select student2.ExamScores.Average()).Max()
        };

    int count = queryGroupMax.Count();
    Console.WriteLine("Number of groups = {0}", count);

    foreach (var item in queryGroupMax)
    {
        Console.WriteLine("  {0} Highest Score={1}", item.Level, item.HighestScore);
    }
}

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)