LINQ ( .NET Language Integrated Query)

Recetemente mencionei a oportunidade que tive de assistir a duas palestras do Anders Hejlsberg. Mas, falei muito pouco sobre o que eu vi. A primeira palestra era sobre LINQ (.NET Language Integrated Query).

Talvez você já tenha ouvido falar sobre LINQ. Basicamente ele é uma nova maneira para acessarmos os dados enquanto desenvolvemos. Na maioria das aplicações precisamos manipular uma quantidade significativa de dados. Mas, infelizmente esta manipulação requer que utilizemos uma linguagem diferente,o SQL. Mais do que isto, requer que pensemos diferente. Por que? Porque estamos saindo do mundo orientado a objetos para o mundo relacional. Além perdemos todos os benefícios do desenvolvemento utilizando um framework e o visual studio: intelisense, debug e outros.

Hoje em dia, também é comum vermos muitos analistas e desenvolvedores buscando frameworks ou ferramentas para realizarem um mapeamento objeto-relacional. Isto de certa maneira, já resolve parte do problema e simplifica o desenvolvimento. O mais comum neste caso é utiliar o Hibernate.

O LINQ resolve tudo isto de uma vez só. Permite realizar o mapeamento e vai além. Permite que você realize uma query numa coleção de objetos de uma maneira muito semelhante ao que você faz com SQL. E com todos os recursos como group by, order by e joins. E isto vale para qualquer coleção. Por exemplo, você poder fazer uma query em um array de inteiros. Algo como, me dê todos os inteiros maior que 7. Talvez  você entenda e não consiga imaginar o que eu estou dizendo. Bem, vou fazer um outro post com alguns exemplos de código para vocês entenderem.

Além disto, ele oferece uma maneira de mapearmos automaticamente uma base SQL para objetos. Isto oferece uma produtividade muito interesssante.

Obviamente para que o Framework conseguisse trabalhar desta maneira, era necessário agregar algumas funcionalidades. Isto foi feito e resutou em uma série de novos recursos para os desenvolvedores. Alguns são mais simples ou um pouco mais complexos de serem entendidos, porém todos eles reduzem a quantidade de código necessário, quando aplicados da maneira correta.

Obviamente vou fazer muitos posts sobres estes assuntos daqui para frente.

Se você ainda não leu nada sobre isto, vale a pena dar uma olhada na página do projeto e o vídeo com o Anders dando uma entrevista sobre LINQ e C#.