Consulta Integrada linguística (LINQ)

Language-Integrated Query (LINQ) é o nome de um conjunto de tecnologias baseadas na integração das capacidades de consulta diretamente no idioma C. Tradicionalmente, as consultas contra os dados são expressas como cordas simples sem verificação de tipo na hora de compilação ou suporte IntelliSense. Além disso, tem de aprender uma linguagem de consulta diferente para cada tipo de fonte de dados: SQL bases de dados, documentos XML, vários serviços Web, e assim por diante. Com o LINQ, uma consulta é uma construção linguística de primeira classe, tal como aulas, métodos, eventos.

Para um desenvolvedor que escreve consultas, a parte "integrada da linguagem" mais visível do LINQ é a expressão de consulta. As expressões de consulta são escritas numa sintaxe de consulta declarativa. Ao utilizar a sintaxe de consulta, pode efetuar operações de filtragem, encomenda e agrupamento em fontes de dados com um mínimo de código. Utiliza os mesmos padrões básicos de expressão de consulta para consultar e transformar dados em bases de dados SQL, conjuntos de dados ADO .NET, documentos e streams XML e coleções .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, a definição da expressão de consulta e a execução da consulta em comunicado foreach .

// Specify the data source.
int[] scores = { 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

Visão geral da expressão de consulta

  • As expressões de consulta podem ser usadas para consultar e transformar dados a partir de qualquer fonte de dados ativada pelo LINQ. Por exemplo, uma única consulta pode obter dados de uma base de dados SQL e produzir um fluxo XML como saída.

  • As expressões de consulta são fáceis de entender porque usam muitas construções familiares da linguagem C#.

  • As variáveis numa expressão de consulta são todas fortemente dactilografada, embora em muitos casos não tenha que fornecer o tipo explicitamente porque o compilador pode inferi-lo. Para obter mais informações, consulte relações tipo em operações de consulta LINQ.

  • Uma consulta não é executada até que você iterate sobre a variável de consulta, por exemplo, em um foreach comunicado. Para obter mais informações, consulte Introdução às consultas LINQ.

  • No momento da compilação, as expressões de consulta são convertidas para chamadas de operador de consulta padrão de acordo com as regras estabelecidas na especificação C#. Qualquer consulta que possa ser expressa através da sintaxe de consulta também pode ser expressa utilizando a sintaxe do método. No entanto, na maioria dos casos, a sintaxe de consulta é mais legível e concisa. Para obter mais informações, consulte a especificação do idioma C# e a visão geral dos operadores de consulta padrão.

  • Por regra, quando escrever consultas LINQ, recomendamos que utilize sintaxe de consulta sempre que possível e sintaxe de método sempre que necessário. Não há diferença semântica ou de desempenho entre as duas formas diferentes. As expressões de consulta são muitas vezes mais legíveis do que expressões equivalentes escritas na sintaxe do método.

  • Algumas operações de consulta, tais como Count ou Maxnão, não têm cláusula de expressão de consulta equivalente e devem, por conseguinte, ser expressas como uma chamada de método. A sintaxe do método pode ser combinada com a sintaxe de consulta de várias maneiras. Para obter mais informações, consulte a sintaxe de consulta e a sintaxe do método em LINQ.

  • As expressões de consulta podem ser compiladas para expressão de árvores ou para delegados, dependendo do tipo a que a consulta é aplicada. IEnumerable<T> consultas são compiladas para delegados. IQueryable e IQueryable<T> as consultas são compiladas para expressão de árvores. Para mais informações, consulte As árvores de expressão.

Passos seguintes

Para saber mais detalhes sobre o LINQ, comece por se familiarizar com alguns conceitos básicos em básicos de expressão de consulta, e depois leia a documentação para a tecnologia LINQ em que está interessado:

Para obter uma compreensão mais profunda do LINQ em geral, consulte LINQ em C#.

Para começar a trabalhar com o LINQ em C#, consulte o tutorial Trabalhando com LINQ.