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:

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.
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.
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); } ...