Compartilhar via


How to: Executar uma subconsulta em uma operação de agrupamento (guia de programação de C#)

Este tópico mostra duas maneiras de criar uma consulta que classifica os dados de origem em grupos e realiza uma subconsulta sobre cada grupo individualmente. A técnica básica em cada exemplo é agrupar os 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 de grupo (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 dados de origem.

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 How to: Consultar uma coleção de objetos (guia de programação de C#). Para compilar e executar esse método, colada na StudentClass esse aplicativo de classe e adicionar uma chamada a partir de Main método.

Quando você pode adaptar esse método para o 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

LINQ Expressões de consulta (guia de programação de C#)