Introdução a LINQ: LINQ (Language Integrated Query) é uma funcionalidade muito importante do .NET framework, trazendo uma sintaxe próxima do SQL, porém simples para ser utilizada em qualquer fonte de dados, de arrays e listas em memória a implementações para o uso com banco de dados.

Neste artigo veremos seu conceito e alguns exemplos de implementações com o mesmo que podem ser utilizados no nosso dia a dia.


Em que situação o tema é útil:
Este tema é útil na recuperação de dados de forma prática, eficiente e produtiva, fornecendo ao desenvolvedor um modo elegante de acessar seus dados estejam eles em memória, arquivos XML ou bases de dados.

Lidar com coleções de dados é algo que desenvolvedores necessitam muitas vezes, sejam dados vindos de um banco de dados, dados de XML, dados em listas de objetos dentre outros veículos, porém o caminho mais comum é ter para cada fonte de dados uma forma diferente de trabalhar.

Eis então que surge no .NET 3.5 a Language-Integrated Query, conhecida como LINQ, tornando a manipulação de itens de dados, sejam objetos, arquivos XML ou retornos de banco de dados, em objetos tendo praticamente a mesma forma para todos eles. Assim se tornou mais fácil trabalhar com os dados de forma unificada.

Tendo surgido no .NET 3.5 ela é suportada a partir do C# 3.0 em diante e também por outras linguagens da plataforma, como por exemplo, o VB.Net.

A LINQ é então uma sub linguagem de paradigma declarativo que roda por cima da CLR podendo ser usada misturada no contexto de outras linguagens, por exemplo, seu projeto pode ser Vb.Net ou C#, entre outras, e usar trechos de código LINQ no meio dos seus códigos.

Temos então a Figura 1 que mostra onde a LINQ está na arquitetura do .NET Framework:

A LINQ dentro do .Net Framework

Figura 1. A LINQ dentro do .Net Framework

Como pode ver a LINQ é disponível para qualquer linguagem do .NET como um recurso adicional. Os chamados LINQ-Enabled Data Sources seriam implementações da LINQ para diversos cenários, como a LINQ to SQL, primeiro esboço de ORM da Microsoft, substituído depois pelo Entity Framework que utiliza a LINQ to Entities, além da LINQ to XML em que podemos usar para consultar nós no XML como itens de dados em uma estrutura OO.

Nota: A LINQ consegue trabalhar com qualquer estrutura de objetos que implemente a interface IEnumerable<T>.

As principais vantagens apontadas pela Microsoft para o uso da LINQ são a validação de sintaxe em tempo de execução, suporte a IntelliSense e tipagem estática.

Sintaxe

A linguagem LINQ possui duas formas de pesquisa: sintaxe de consulta (muito próxima da linguagem SQL) e a sintaxe de método.

Sintaxe de consulta

A sintaxe de consulta é chamada de Comprehension Queries e utiliza de palavras chaves em comum com a SQL como from, where e select, porém em uma outra ordem. Segundo o time da LINQ eles fizeram de uma forma mais lógica do que a SQL: primeiro o quê, depois de onde, depois a clausula where e por fim o select. Sempre começando com from e terminando com select, como podemos notar no exemplo da Listagem 1.

Listagem 1. Selecionando uma string dentro de um array

string[] linguagens = { "C#", "PHP", "Java", "Scala", "C++", "Groovy", "Ruby", "Python" };
    var Favorita = from l in linguagens
                   where l.Equals("C#")
                   select l;
    foreach (string f in Favorita) {
        Console.WriteLine(f);
    }  ... 

Quer ler esse conteúdo completo? Tenha acesso completo