Friday, May 26, 2006

LINQ: ADO.Net next generation


I recently tried The LinQ Project. LINQ stands for Language Integrated Query and it is just great, at least for me. What's the best way to manage data? If you didn't say SQL stop reading!
The best way to explain LINQ is with examples, so here I go. Imagine you have an array of strings (string[]) and yo want to print every string which length is longer than 5 characters, and you want to print'em in upper case.
You would probably do something like this:

foreach (string s in myStrings)
{
If (s.Length > 5)
Console .WriteLine(s.ToUpper()); //What if you want'em ordered?
}

Well, now with LINQ you can use the classic SQL syntax like SELECT, FROM and WHERE. The only difference is the order you use with those "commands".
Let's write the same example using LINQ.

expr = from s in myStrings
where s.Length > 5
orderby s //Ordering here!!!
select s.ToUpper();

foreach (string item in expr)
Console.WriteLine(item);

Isn't that great?!

And trust me, this is the simples dumbed example, you can do amazing things with it, like creating classes for your application in runtime. In this example we're just selecting text, but let's say you want to select many attributes from a User table like Name, Address, and Phone. You can select those attributes and "declare them" as a class called Clients and you can reference that Client class later on in your code.
I hope I made myself clear, go to the LINQ Project home page and also download Anders' video from Channel9.

Recientemente probé el proyecto LINQ. LINQ significa consultas integradas al lenguaje (o algo así por su sigla en inglés) y es fabuloso, por lo menos para mi. Cuál es la mejor forma de manejar datos? si no contestó SQL deje de leer!
La mejor forma de explicar LINQ es mediante ejemplos, asi que aquí voy. Imagine que tiene un arreglo de strings (string[]) y quiere imprimir todas las cadenas cuyo largo sea mayor que 5 caracteres, y quiere imprimirlas en mayúscula.
Probablemente ud. haría algo como esto:

foreach (string s in myStrings)
{
If (s.Length > 5)
Console .WriteLine(s.ToUpper()); //Qué pasa si quisiera ordenarlos??
}

Bien, pues ahora con LINQ usted podrá utilizar la clásica sintaxis de SQL como ser SELECT, FROM, y WHERE. La única diferencia es el orden en el que uno escribe estos comandos.
Escribamos el mismo ejemplo utilizando LINQ.

expr = from s in myStrings
where s.Length > 5
orderby s //Ordenado desde aquí!!!
select s.ToUpper();

foreach (string item in expr)
Console.WriteLine(item);

No es bárbaro?!

Y créeanme que este es el ejemplo mas choto que existe, uno puede hacer cosas asombrosas con esto, como crear clases para su aplicación en tiempo de ejecución. En este ejemplo simplemente estamos seleccionando texto, pero digamos que usted quiere seleccionar varios atributos de una tabla Usuarios como ser Nombre, Dirección, y Teléfono. Usted puede seleccionar esos atributos y "declararlos" como una clase llamada Clientes y puede referenciar esa clase mas adelante en su código.
Espero haberme hecho entender, vaya a la página del LINQ Project y bájese el video de Ander de Channel9.

Read Full Post