Skip to main content

O que é uma consulta integrada ao idioma?

A consulta integrada à linguagem (LINQ) fornece a capacidade de integrar perfeitamente a sintaxe da consulta declarativa em linguagens imperativas, principalmente C # e VB.NET. O desenvolvimento do LINQ resolveu os problemas que os desenvolvedores trabalham em ambientes orientados a objetos encontrados ao executar consultas. Foi introduzido como parte do Microsoft® .NET Framework versão 3.5 em novembro de 2007 e no codinome do Visual Studio® "Orcas".

Antes da criação da consulta integrada à linguagem, as linguagens .NET não tinham uma maneira nativa de consultar bancos de dados relacionais ou documentos XML. Os desenvolvedores que escrevem nessas linguagens tiveram que incorporar SQL ou XQuery, respectivamente, como strings e mapear manualmente os dados resultantes para objetos .NET. As seqüências de caracteres e os mapeamentos de consulta incorporados não puderam ser validados pelos compiladores .NET, permitindo que erros em potencial fossem descobertos em tempo de execução.

Outro problema enfrentado pelos desenvolvedores antes da consulta integrada à linguagem era que as linguagens .NET tinham apenas sintaxe orientada a objetos para consultar coleções de objetos .NET. Normalmente, o desenvolvedor itera sobre toda uma coleção de fontes, criando novas coleções de resultados com base nos critérios de pesquisa. O desenvolvedor também pode transformar os dados enquanto cria as coleções de resultados. Essa abordagem foi complicada; uma consulta de seleção simples escrita em C # ou VB exigiria pelo menos cinco linhas de código, enquanto a mesma consulta exigiria uma linha de código em uma linguagem de consulta.

Os desafios da consulta em um ambiente orientado a objetos deram à Microsoft o ímpeto de criar o LINQ. O LINQ fornece uma sintaxe de consulta remanescente do SQL a ser usada em linha com C # ou VB, completa com a verificação de tipo estático. Ao consultar coleções .NET, em vez de usar loops aninhados, os desenvolvedores podem usar a sintaxe LINQ para selecionar itens e transformar dados. Entre outras vantagens, isso resulta em menos linhas de código em comparação com a sintaxe puramente orientada a objetos.

Ao acessar fontes de dados externas, o LINQ e os componentes de suporte removem a necessidade de linguagens de consulta incorporadas e mapeamentos de dados dentro da própria linguagem .NET. Para executar o mapeamento de dados, o LINQ depende de componentes chamados provedores LINQ. O LINQ-to-Objects é o provedor de estoque que permite ao LINQ acessar coleções do .NET. Da mesma forma, existem provedores para acessar bancos de dados relacionais e documentos XML. A maioria desses provedores são componentes de terceiros não incluídos no .NET Framework. Independentemente do provedor usado, todas as consultas usam a mesma sintaxe LINQ.

Entre a sintaxe de consulta integrada ao idioma e os provedores, há uma biblioteca de operadores de consulta adicionados ao .NET Framework como parte dos recursos do LINQ. Esses operadores realizam tarefas como filtragem, pedido, operações de teoria de conjuntos e agregação. Como esses operadores fazem parte do .NET Framework, eles também podem ser usados ​​sem o LINQ, se o desenvolvedor assim o desejar.