Desde o .NET 1.1 nós podemos trabalhar com várias fontes de dados utilizando ténicas bem parecidas. Podemos carregar dados de um XML ou de um banco de dados sem muita dor de cabeça sem tantas mudanças no nosso código. Já para buscar dados em coleções de objetos, nós tinhamos que filtrar os dados percorrendo os objetos.

Com as mudanças na linguagem feitas para o C# 3.5, nós podemos lidar com coleções de objetos de forma semelhante ao SQL. E é sobre essas técnicas que eu vou falar nessa sequência de artigos. No artigo de hoje iremos conhecer um pouco sobre a sintaxe envolvida através dos exemplos abaixo:

Dado um vetor de inteiros, queremos buscar os números ordenados.

int[] numbers = new int[] { 2, 6, 4, 3, 5, 8, 7, 9, 1, 0 };

var results = from e in numbers
              orderby e
              select e;

foreach (var e in results)
{
    Console.WriteLine(e);
}
Console.Read();

Veja, que o vetor numbers encontra-se desordenado. E para buscar os dados usamos um sintaxe semelhante ao SQL. O trecho:

var results = from e in numbers
              orderby e
              select e;

Pode ser lido assim: me dê todos os elementos no vetor numbers. Em seguida ordene-os. Selecione o elemento e adicione ao resultado.

Agora, vamos falar um pouco sobre o "var". A primeira leitura que fazemos é relacionar ao "var" do javascript, ERRADO! O termo var é para indicar que o tipo da variável será determinado pela função a direita.

O trecho acima, é exatamente o mesmo do:

System.Linq.IOrderedEnumerable results = from e in numbers
                                              orderby e
                                              select e;

O var veio para simplificar a declaração de variáveis quando o tipo só é melhor conhecido pelo resultado a direita.

Nós próximos posts iremos criar exemplos mais robustos, e irei falar sobre como podemos resolver melhor alguns problemas antigos. Se você possui alguma dúvida sobre algum recurso dessa tecnologia mande uma mensagem.