Como: executar uma subconsulta em uma operação de agrupamento (guia de programação do C#)

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

Para obter mais informações sobre como grupo, consulte cláusula Group (referência de C#).

Para obter mais informações sobre a continuação, consulte em (C# referência).O exemplo a seguir usa uma estrutura de dados na memória como fonte de dados, mas os mesmos princípios se aplicam para qualquer tipo de LINQ fonte de dados.

Exemplo

public 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 amostra em Como: consulta uma coleção de objetos (guia de programação do C#).Para compilar e executar esse método, colá-lo na StudentClass classe nesse aplicativo e adicione uma chamada a partir do Main método.

Quando você adapta este método para seu próprio aplicativo, lembre-se de que o LINQ requer a versão 3.5 da .NET Framework, e o projeto deve conter uma referência a System.Core.dll e o uso de uma diretriz para System. LINQ.LINQ to SQL, LINQ to XML e LINQ to DataSet tipos exigem referências e usos adicionais.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 do C#)