Compartilhar via


Consultas no LINQ to Entities

Uma consulta é uma expressão que recupera dados de uma fonte de dados. Normalmente, as consultas são expressas em uma linguagem de consulta especializada, como o SQL para bancos de dados relacionais e o XQuery para XML. Portanto, os desenvolvedores precisaram aprender uma nova linguagem de consulta para cada tipo de fonte de dados ou formato de dados que consultam. O LINQ (Consulta Integrada à Linguagem) oferece um modelo mais simples e consistente para trabalhar com dados em vários tipos de fontes de dados e formatos. Em uma consulta LINQ, você sempre trabalha com objetos de programação.

Uma operação de consulta LINQ consiste em três ações: obter a fonte ou fontes de dados, criar a consulta e executá-la.

As fontes de dados que implementam a interface genérica IEnumerable<T> ou a interface genérica de IQueryable<T> podem ser consultadas por meio do LINQ. As instâncias da classe genérica ObjectQuery<T>, que implementa a interface genérica IQueryable<T>, funcionam como a fonte de dados para consultas LINQ to Entities. A classe genérica ObjectQuery<T> representa uma consulta que retorna uma coleção de zero ou mais objetos tipados. Você também pode permitir que o compilador infira o tipo de uma entidade usando a palavra-chave var do C# (Dim no Visual Basic).

Na consulta, você especifica exatamente as informações que deseja recuperar da fonte de dados. Uma consulta também pode especificar como essas informações devem ser classificadas, agrupadas e moldadas antes de serem retornadas. No LINQ, uma consulta é armazenada em uma variável. Se a consulta retornar uma sequência de valores, a própria variável da consulta deverá ser um tipo consultável. Essa variável de consulta não toma nenhuma ação e não retorna nenhum dado, ela apenas armazena as informações da consulta. Depois de criar uma consulta, você deve executá-la para recuperar todos os dados.

Sintaxe da consulta

As consultas LINQ to Entities podem ser compostas de duas sintaxes diferentes: sintaxe de expressão de consulta e sintaxe de consulta baseada em método. A sintaxe de expressão de consulta é nova no C# 3.0 e no Visual Basic 9.0 e consiste em um conjunto de cláusulas escritas em uma sintaxe declarativa semelhante ao Transact-SQL ou ao XQuery. No entanto, o CLR (Common Language Runtime) do .NET Framework não pode ler a sintaxe de expressão de consulta em si. Portanto, em tempo de compilação, as expressões de consulta são convertidas em algo que o CLR não compreende: chamadas de método. Esses métodos são conhecidos como os operadores de consulta padrão. Como desenvolvedor, você tem a opção de chamá-los diretamente usando a sintaxe do método, em vez de usar a sintaxe de consulta. Para obter mais informações, consulte Sintaxe de consulta e sintaxe de método em LINQ.

Sintaxe de expressão de consulta

As expressões de consulta são uma sintaxe declarativa de consulta. Essa sintaxe permite que um desenvolvedor escreva consultas em uma linguagem de alto nível que é formatada de maneira semelhante ao Transact-SQL. Usando a sintaxe de expressão de consulta, você pode executar até operações complexas de filtragem, ordenação e agrupamento em fontes de dados com o mínimo de código. Para obter mais informações, consulte Operações Básicas de Consulta (Visual Basic). Consulte os tópicos a seguir, para obter exemplos que demonstram como usar a sintaxe de expressão de consulta:

Sintaxe de pesquisa baseada em método

Outra maneira de compor consultas LINQ to Entities é usar consultas baseadas em método. A sintaxe da consulta baseada em método é uma sequência de chamadas diretas de método para métodos de operadores LINQ, passando expressões lambda como parâmetros. Para obter mais informações, consulte Expressões Lambda. Para obter exemplos que demonstram como usar a sintaxe baseada em método, consulte os seguintes tópicos:

Confira também