Introdução
LINQ (Language Integrated Query) é uma nova forma de realizar pesquisas em
conjuntos de dados, sejam relacionais ou não.
A idéia é utilizar uma sintaxe
muito semelhante à sintaxe SQL para realizar pesquisas em bloco de informações,
filtrando os dados (de forma horizontal ou vertical) quando necessário através
da associação de operadores.
Utilizando a IDE do Visual Studio como ambiente de desenvolvimento, o
desenvolvedor poderá utilizar os recursos da LINQ juntamente com os benefícios
da checagem em tempo de compilação e IntelliSense.
Além da possibilidade de execução de querys em blocos de informação, objetos
e bancos de dados, uma extensão denominada XLinq foi criada para uso em arquivos
e informações em XML. A facilidade de uso, permite que instruções XPAth e XQuery
sejam executadas de maneira semelhante às instruções SQL.
Os operadores e as definições da LINQ farão parte da CLR (Common Lnguage
Runtime). Devido a esta integração, essa nova tecnologia possuirá recursos de
tipagem forte de dados, bem como otimização de performance baseadas em padrões
.NET.
Esse novo recurso será parte integrante do Visual Studio codinome ORCAS e
estará disponível no Visual Basic.net 9.0 e C# 3.0.
Para informações sobre o
futuro Visual Studio, acesse: http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx#orcas
Para os entusiastas, a Microsoft preparou um pacote que permite instalar os
recursos do LINQ no Visual Studio 2005 Beta 2. O download deve ser feito
separadamente para o VB.NET e para o C#:
C# LINQ Tech Preview: http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/LINQ%20Preview.msi
Visual Basic LINQ Tech Preview: http://download.microsoft.com/download/2/a/4/2a405b66-1b1c-4fca-bfbf-007aad63d307/LINQ%20VB%20Preview.msi
Usando LINQ em Collections
Depois de instalarmos os SDK (Tech Preview) para C# e Visual Basic, iremos
criar um projeto baseado no template Linq Preview.
1) Execute o Visual Studio
2005 Beta 2, clique em File | New | Project.
2) Em
Project Types escolha Visual C# | LINQ Preview
.
3) Na listagem Templates, escolha LINQ
Windows Application.
4) No Campo Name, informe o
nome LINQExemplo1 e clique em OK.

Um projeto muito
semelhante aos projetos WinForms será criado. A diferença primordial pode ser
vista nas importações dos namespaces:

Note que os namespaces
System.Data.DLinq, System.Query e
System.Xml.XLinq são novidades.
Adicione um botão com o
texto ordenar e um TextBox no formulário, como pode ser visto
na figura abaixo:

Dê um duplo clique no botão para acessar a codificação do
mesmo.
Adicione o seguinte trecho de código:
private void btnOrdenar_Click(object sender, EventArgs e)
{
var numbers = new int[] { 468, 7, 1, 4, 6, 3, 5, 8, 74, 81, 138};
var evenNumbers = from p in numbers where (p % 2) == 0 select p;
foreach(var val in evenNumbers)
{
txtPares.Text += val + " ";
}
}
Um simples array de inteiros foi criado e alguns número foram
atribuídos como valores. Note que existem números pares e ímpares. Nosso
objetivo é separar os números pares e mostra-los na caixa de texto.
O core de
nosso código é a instrução var evenNumbers = from p in numbers where (p
% 2) == 0 select p;
Uma instrução LINQ é executada usando o operador
WHERE (P % 2) == 0 (ONDE o resto da divisão de P por 2 é igual a ZERO). Somente
os números que se encontram nesta condição deverão ser retornados.
O
resultado da execução do código pode se observado na figura abaixo:

Troque apenas a definição
de IGUAL por DIFERENTE na expressão WHERE e obteremos os número ímpares:
private void btnOrdenar_Click(object sender, EventArgs e)
{
var numbers = new int[] { 468, 7, 1, 4, 6, 3, 5, 8, 74, 81, 138};
var evenNumbers = from p in numbers where (p % 2) != 0 select p;
foreach(var val in evenNumbers)
{
txtPares.Text += val + " ";
}
}
