Exemplo de LINQ - II
Esta semana realizamos na Microsoft o Innovation Days SP de Março. Este evento é para parceiros que fazem parte do programa de parcerias da Microsoft como desenvolvedores de software (ISV's) ou com desenvolvedores de soluções customizadas (CDS's)*. O tema deste mês foi LINQ.
Eu tive a oportunidade de apresentar o LINQ to SQL (antes DLINQ) que faz o mapeamento objeto relacional de um database em um SQL Server. E os objetos mapeados podem ser acessados por queries do LINQ. As queries do LINQ para SQL permitem que qualquer query que você pode fazer no SQL no banco de dados também sejam feitas.
Os outros palestrantes foram o Joel Pereira e o Roberto Santos, ambos fazem parte do primeiro time de desenvolvimento da Microsoft no Brasil. O Roberto deixou todo mundo de cabelo em pé enquanto mostrava o que acontence no compilador e como implementar algumas coisas em LINQ.
Mas, falando sobre LINQ to SQL pedi para ele mostrar uma das coisas interessantes de uso do LINQ. O LINQ permite que façamos joins entres objetos que representam tabelas. O mais interessante é que o join pode ser feito com entre um objeto que representa uma tabela um array de strings, por exemplo.
Vejo o que pode se feito. Vamos usar o database Northwind. Vamos fazer uma query na tabela customers para trazer todos os identificadores dos clientes com a cidade Londres.
var _result = from c in db.Customers
where c.City == "LONDON"
select c.CustomerID;
O resultado será:
Digamos agora que eu quero buscar apenas um subconjunto deste Id's. Podemos utilizar o array de strings abaixo como base.
var _ids = new string[] {"AROUT","BSBEV","CONSH"};
Podemos então fazer um join entre os dois objetos.
var _result = from id in _ids
from c in db.Customers
where c.CustomerID == id && c.City == "LONDON"
select c.CustomerID;
E teremos como resultado:
Uma outra maneira seria:
var _result = from id in _ids
join c in db.Customers on id equals c.CustomerID
select c.CustomerID;
Isto é LINQ!!! Não é uma melhor maneira de manipular dados do que ficar mexendo com string para e para lá!?
Até mais!!!
* P.S: O Innovation Days são eventos focados em parceiros desenvolvedores de produtos e soluções. Em São Paulo estes eventos tem como objetivo tratar de um único assunto por mês e fazer um drill-down neste assunto, mostrando a arquitetura e dando dicas e truques. Eventos de nível 300.
Comments
Anonymous
April 04, 2007
Cesar, Bom primeiro quero parabeniza-lo pelo evento, eu estive lá e foi muito bom, tão bom que preciso multiplicar o conhecimento aqui na empresa q trabalho (Mega Sistemas) e gostaria de ter acesso aos ppts q foram usados, só pra seguir a mesma lógica da apresentação!! Eu procurei em http://www.microsoft.com/brasil/parceiros/evento mas não tem nada lá, onde eu acho!! Inclusive os ppts do Innovation Day anterior eu tb nunca consegui!! valeu, Wender..Anonymous
April 04, 2007
Wender, fico feliz que o evento tenha atendido as suas expectativas e espero que o conhecimento lá apresentado, realmente seja útil. O conteúdo estará disponível no url http://www.microsoft.com/brasil/parceiros/isv/eventos/. Ele ainda não está disponível,mas muito provavelmente estará até o fim desta semana. Um abraçoAnonymous
April 04, 2007
The comment has been removedAnonymous
April 04, 2007
Cezar está blogando alguns exemplos simples de Linq para o pessoal começar a se acostumar com a novidadeAnonymous
April 06, 2007
Wender, os arquivos já estão alocados para upload, mas leva algum tempo para estarem disponíveis. Provavelmente na semana que vem estará disponível.