Share via


Expressões de consulta LINQ (Guia de Programação em C#)

LINQ (Consulta Integrada à Linguagem)é o nome de um conjunto de tecnologias com base na integração dos recursos de consulta diretamente para o idioma C# (também em Visual Basic e potencialmente qualquer outro.NET language). Com LINQ, uma consulta agora é uma construção de linguagem de primeira classe, assim como classes, métodos, eventos e assim por diante.

Para um desenvolvedor que grava consultas, a parte mais visível "integrada à linguagem" de LINQ é a expressão de consulta. Expressões de consulta são escritas em um declarativa sintaxe de consulta introduzido no C# 3.0. Usando a sintaxe de consulta, você pode executar mesmo complexos filtragem, classificação e operações de agrupamento em Fonte de Dados com um mínimo de código. Você usar os mesmos padrões de expressão de consulta básica para consulta e transformar dados em bancos de dados SQL, ADO.NET conjuntos de dados, documentos XML e fluxos, e.NET coleções.

O exemplo a seguir mostra a operação de consulta completa. A operação completa inclui a criação de uma fonte de dados, definindo a expressão de consulta e executar a consulta em um foreach instrução.

class LINQQueryExpressions
{
    static void Main()
    {

        // Specify the data source. 
        int[] scores = new int[] { 97, 92, 81, 60 };

        // Define the query expression.
        IEnumerable<int> scoreQuery =
            from score in scores
            where score > 80
            select score;

        // Execute the query. 
        foreach (int i in scoreQuery)
        {
            Console.Write(i + " ");
        }            
    }
}
// Output: 97 92 81

Para obter mais informações sobre os fundamentos do LINQ na C#, consulte Introdução a LINQ em C#.

Visão geral da expressão de consulta

  • Expressões de consulta podem ser usadas para consultar e transformar dados de qualquer LINQ-habilitado a fonte de dados. Por exemplo, uma única consulta pode recuperar dados de um banco de dados SQL e produzir um fluxo XML como saída.

  • Expressões de consulta são fáceis dominar porque eles usam construções muitos familiares C# de linguagem. Para obter mais informações, consulte Introdução a LINQ em C#.

  • As variáveis em uma expressão de consulta são todos fortemente tipadas, embora em muitos casos você não tem que oferecer o tipo explicitamente porque o compilador pode inferir a ele. Para obter mais informações, consulte Relacionamentos de tipo em operações de consulta LINQ (C#).

  • Uma consulta não é executada até que você pode iterar sobre a variável de consulta em um foreach instrução. Para obter mais informações, consulte Introdução a consultas LINQ (C#).

  • Em tempo de compilação, expressões de consulta são convertidos em chamadas de método do operador de consulta padrão de acordo com a regras definidas na especificação C#. Qualquer consulta que pode ser expressos usando a sintaxe de consulta também pode ser expressos usando a sintaxe do método. No entanto, na maioria dos casos a sintaxe de consulta é mais legível e concisos. Para obter mais informações, consulte Especificação da linguagem C# e Visão geral de operadores de consulta padrão.

  • Como regra quando você escreve LINQ consultas, é recomendável que você use a sintaxe de consulta sempre que possível e a sintaxe do método sempre que necessário. Há não semântica ou desempenho diferença entre as duas formas diferentes. Expressões de consulta são geralmente mais legível do que as expressões equivalentes escritas na sintaxe do método.

  • Algumas operações, da consulta, como Count``1 ou Max, não ter nenhuma cláusula de expressão de consulta equivalente e, portanto, devem ser expressos como uma chamada de método. Sintaxe do método pode ser combinado com a sintaxe de consulta de várias maneiras. Para obter mais informações, consulte Sintaxe de consulta e sintaxe de método em LINQ (C#).

  • Expressões de consulta podem ser compiladas para árvores de expressão ou representantes, dependendo do tipo que a consulta é aplicada a. IEnumerableconsultas são compiladas para representantes. IQueryablee IQueryable consultas são compiladas em árvores de expressão. Para obter mais informações, consulte Árvores de expressão (C# e Visual Basic).

A tabela a seguir, lista os tópicos que fornecem informações adicionais sobre as consultas e exemplos de código para tarefas comuns.

Tópico

Descrição

Noções básicas sobre expressões de consulta (Guia de Programação em C#)

Introduz os conceitos fundamentais de consulta e fornece exemplos da sintaxe de consulta C#.

Como escrever consultas LINQ em C#

Fornece exemplos de vários tipos básicos de expressões de consulta.

Como manipular exceções em expressões de consulta (Guia de Programação em C#)

Como e quando mover possível exception-throwing código fora de uma expressão de consulta.

Como preencher coleções de objetos a partir de várias fontes (LINQ)

Como usar o select a instrução para mesclar dados de fontes diferentes em um novo tipo.

Como agrupar resultados de consultas (Guia de Programação em C#)

Mostra as diferentes maneiras para usar o group cláusula.

Como criar um grupo aninhado (Guia de Programação em C#)

Mostra como criar grupos aninhados.

Como executar uma subconsulta em uma operação de agrupamento (Guia de Programação em C#)

Mostra como usar uma subexpressão em uma consulta como fonte de dados para uma nova consulta.

Como agrupar resultados por chaves contíguas (Guia de Programação em C#)

Mostra como implementar um operador de consulta padrão do thread-safe que pode executar operações de agrupamento em fontes de dados de fluxo contínuo.

Como especificar filtros predicados dinamicamente em tempo de execução (Guia de Programação em C#)

Mostra como fornecer um número arbitrário de valores a serem usados em comparações de igualdade em um where cláusula.

Como armazenar os resultados de uma consulta na memória (Guia de Programação em C#)

Ilustra como Materializar e armazenar os resultados da consulta sem necessariamente usando um foreach loop.

Como retornar uma consulta de um método (Guia de Programação em C#)

Mostra como retornar as variáveis de consulta de métodos e passá-los para métodos como parâmetros de entrada.

Como executar operações de junção personalizadas (Guia de Programação em C#)

Mostra como executar as operações de associação baseadas em qualquer tipo de função de predicado.

Como unir usando chaves compostas (Guia de Programação em C#)

Mostra como unir duas fontes com base em mais de uma chave correspondente.

Como ordenar os resultados de uma cláusula join (Guia de Programação em C#)

Mostra a ordem de uma seqüência que é produzida por uma operação de associação.

Como executar junções internas (Guia de Programação em C#)

Mostra como executar uma associação interna na LINQ.

Como executar junções agrupadas (Guia de Programação em C#)

Mostra como produzir uma junção agrupada em LINQ.

Como executar junções externas esquerdas (Guia de Programação em C#)

Mostra como produzir uma junção externa esquerda na LINQ.

Como manipular valores nulos em expressões de consulta (Guia de Programação em C#)

Mostra como tratar valores nulos em LINQ consultas.

Consulte também

Tarefas

Instruções passo a passo: escrevendo consultas em C# (LINQ)

Conceitos

Guia de Programação em C#

Operações de consulta LINQ básica (C#)

Sintaxe de consulta e sintaxe de método em LINQ (C#)

Visão geral de operadores de consulta padrão

Outros recursos

LINQ (Consulta Integrada à Linguagem)

Palavras-chave de consulta (Referência de C#)

Como funcionam as consultas Linq to Objects

de leitura e consultas de escrita

o que é uma coleção?

Link para tudo: uma lista de provedores LINQ