1 mar 2008

// // Comentar

Introducción a LINQ con Objetos

Holas!

Como mencione en el post anterior tuve el gusto de tratar el tema en la gira y quería compartir algunas de las cosas, las cuales se hablaron en la charla, este tema es nuevo en VS 2008 y puede ayudarnos significativamente en el desarrollo de nuestras aplicaciones, y realmente el poder de LINQ es asombroso, ya que gracias a esto podemos ahorrarnos muchas líneas de código, aparte de tener un código mas limpio y simple.

En si lo que viene a ser LINQ (Language Integrated Query), como su mismo nombre lo indica, Consultas Integradas al Lenguaje, con esto quiere decir que nosotros podemos realizar consultas similares a las que tenemos en SQL, desde nuestro propio lenguaje, ya sea manejemos VB, C# u otro, esto es independiente del lenguaje, en mi caso particularmente uso C#, así que el código que veamos estará implementado en este lenguaje, el poder de LINQ va de la mano con algunas novedades de C# 3.0 como son los tipos anónimos, inferencia de tipos, entre otras características.

Esta imagen, describe mejor como trabaja LINQ, dentro de LINQ tenemos varias orientaciones, como es LINQ to Objects, LINQ to SQL, etc. Cada uno especifico para un origen de datos, como son Objetos, Relacionales y XML.

LINQ

Para ver un poco de lo que podemos hacer con LINQ vamos a iniciar con un ejemplo sencillo que hará una consulta a un conjunto de objetos y los filtrara de acuerdo a un criterio.

Iniciamos abriendo el VS 2008 y creamos una aplicación de consola en C#, dentro de la cual vamos a crear un array de Strings en el método Main, como vemos en el siguiente código:

   1: String[] meses = new String[]{"Enero", "Febrero", "Marzo", "Abril", "Mayo", 


   2:                               "Junio", "Julio", "Agosto", "Setiembre",


   3:                               "Octubre", "Noviembre", "Diciembre"};




Ahora que tenemos declarado nuestro Array, vamos a hacer la respectiva consulta:





   1: var mesesSeleccionados = from m in meses


   2:                          where m.Contains("a")


   3:   select m;




El código anterior que pueden apreciar es en si la consulta que se compone de 3 partes principales, en la línea 1 tenemos la variable mesesSeleccionados, declarada como var, esto no es JavaScript es una novedad en C# 3.0, que ya trataremos mas adelante a detalle, por ahora lo dejamos ahí, es lo mismo que definir un tipo de dato fuertemente tipado, también vemos from m in meses, esto hace que digamos de donde obtendremos los datos a consultar, en este casi es el array de nombre meses y lo guardaremos en "m", ahora analizando la segunda línea tenemos el where, esto lo que hace es filtrar los datos obtenidos de acuerdo a la condición dada, para este ejemplo filtramos aquellos meses los cuales contengan la letra "a" aquí podemos hacer diversos tipos de filtrados, dependiendo los datos que obtengamos y a la fuente que accedamos, por ultimo tenemos select m, esto ya nos devuelve los datos filtrados previamente.



Como verán las sentencias son similares a las que tenemos en el SQL, aunque no son las mismas, ya que tenemos el orden un poco diferente, además esto es código orientado a objetos y respeta la sintaxis de cada lenguaje de programación.



Ya para probar lo que hemos hecho, agregamos el siguiente código para recorrer los datos filtrados y mostrarlos en la consola:





   1: foreach (var mes in mesesSeleccionados)


   2:             {


   3:                 Console.WriteLine(mes);


   4:             } 




Con este código obtenemos en pantalla "Marzo" y "Mayo", diferenciando mayúsculas de minúsculas.



Este ejemplo es muy básico, pero pretendo mostrar como dice el titulo una introducción breve a lo que es LINQ, mas adelante escribiré algunas cosas sobre las novedades en C# 3.0 y mas LINQ.



Saludos!



0 comentarios: