LINQ Expressões de consulta (guia de programação de 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 possivelmente outros.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, mais visíveis "integrada à linguagem" parte do 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.Coleções de NET.

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 de LINQ em C#, consulte Guia de Introdução do 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 data source. 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 de mestre porque eles usam construções muitos familiares C# de linguagem. Para obter mais informações, consulte Guia de Introdução do 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 Relações de tipo em operações de consulta do LINQ (C#).

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

  • Em tempo de compilação, expressões de consulta são convertidos em chamadas de método de operador de consulta padrão de acordo com 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 conciso. Para obter mais informações, consulte C# Language Specification e Visão geral operadores de consulta padrão.

  • Como regra quando você escreve LINQ consultas, recomendamos 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 de consulta, como Count ou Max, não ter nenhuma cláusula de expressão de consulta equivalente e, portanto, deve ser expresso 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 do LINQ em comparação com a sintaxe do método (C#).

  • Expressões de consulta podem ser compiladas para árvores de expressão ou delegados, dependendo do tipo de consulta é aplicada. IEnumerable<T>consultas são compiladas para representantes. IQueryablee IQueryable<T> consultas são compiladas para á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 da expressão de consulta (guia de programação de C#)

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

How to: Escrever consultas LINQ em C#

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

How to: Tratar exceções em expressões de consulta (C# guia de programação)

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

Como: Preencher as coleções de objetos de várias fontes (LINQ)

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

How to: Grupo de consulta Resultados (guia de programação C#)

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

How to: Criar um grupo aninhado (guia de programação de C#)

Mostra como criar grupos aninhados.

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

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

How to: Grupo de Resultados por contíguos de Chaves (guia de programação C#)

Mostra como implementar um operador de consulta padrão do thread-safe que pode realizar operações de agrupamento em fontes de dados de streaming.

How to: Especificar dinamicamente o filtros de predicado em tempo de execução (guia de programação de C#)

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

How to: Armazenar os Resultados de uma consulta na memória (guia de programação de C#)

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

How to: Retornar a uma consulta de um método (guia de programação de C#)

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

How to: Executar operações de associação de Personalizar (guia de programação de C#)

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

How to: Ingressar usando composto de Chaves (guia de programação C#)

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

How to: Ordem dos Resultados de uma cláusula de associação (guia de programação de C#)

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

How to: Realizar associações de interno (guia de programação C#)

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

How to: Realizar associações agrupadas (guia de programação C#)

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

How to: Executar esquerda junções externas (guia de programação de C#)

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

How to: Manipular valores nulos em expressões de consulta (guia de programação de C#)

Mostra como tratar valores nulos em LINQ consultas.

Consulte também

Tarefas

Demonstra Passo a passo: Escrever consultas em C# (LINQ)

Conceitos

C# Programming Guide

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

Sintaxe de consulta do LINQ em comparação com a sintaxe do método (C#)

Visão geral 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 escrita de consultas

o que é uma coleção?

Link para tudo: Uma lista de provedores LINQ