Buscar este blog

sábado, 12 de febrero de 2011

Que es LINQ

Linq es el acrónimo en ingles para Language-Integrated Query que significa Lenguaje Integrado de Consulta y es un subconjunto agregado a los lenguajes de .Net para realizar búsquedas  y otras operaciones sobre conjuntos de datos, esto es: el mismo lenguaje de tu preferencia puede realizar operaciones sobre conjuntos de datos proporcionándote verificación por parte del compilador,  Intelisense y verificación de tipos sobre las consultas, la sintaxis es muy parecida a SQL con la ventajas antes mencionadas debido a que no se usan con cadenas como en SQL.

Linq puede realizar consultas sobre diversas formas de conjuntos de datos a través de extensiones especificas al conjunto de datos que estas manejando, así existen por lo menos las siguientes extensiones provenientes de Microsoft y otras fuentes:

Linq a objetos: permite manejar consultas a los tipos básicos de .Net como listas y arreglos y sobre clases ya sea del sistema o propias.
Linq a DataSets: las consultas se hacen sobre los componentes de un DataSet ya sea normal o tipeado.
Linq a SQL: las consultas se realizan sobre la base de datos SQL Server con todas las ventajas antes mencionadas.
DBLinq: es un proyecto independiente que es similar a Linq a SQL con la ventaja de que podemos usar bases de datos diferentes a SQL Server y de hecho podemos cambiar de tipo de base de datos con solo modificar la cadena de conexión.
Linq a XML: nos permite realizar consultas en datos guardados en XML.

Para darnos una idea rápida de la forma en que se utiliza Linq tenemos los siguientes ejemplos sencillos de Linq a datos.
Podemos consultar en un arreglo los elementos que cumplen con cierta condición (c#):


   1:  string[] strings = new string[] { "1", "2", "3", "2", "1" };
   2:  IEnumerable<string> two = from s in strings
   3:                            where s == "2"
   4:                            select s;
   5:  Console.Out.WriteLine("s == 2, count{0}", two.Count());

el mismo código en Visual Basic es prácticamente idéntico:


   1:  Dim strings() As String = New String() {"1", "2", "3", "2", "1"}
   2:  Dim two As IEnumerable(Of String) = From s In strings _
   3:     Where s = "2" _
   4:     Select s
   5:  Console.Out.WriteLine("s == 2, count{0}", two.Count())

El resultado de la consulta es un IEnumerable y tenemos que recorrerlo de alguna forma para obtener resultados, en el ejemplo el método Count (que es un método de extensión) recorre el resultado de la consulta y nos entrega la cuenta de los elementos que cumplieron con las condiciones.

También podemos consultar más de un conjunto de datos a la vez (c#):



   1:  int[] integers = new int[] { 1234, 754, 309, 233 };
   2:  var query = from i in integers
   3:              from s in strings
   4:              where i.ToString().Contains(s)
   5:              select new { s, i };
   6:  foreach(var i in query) {
   7:      Console.Out.WriteLine("{0}, {1}", i.s, i.i);
   8:  }

en Visual Basic:

   1:  Dim integers() As Integer = New Integer() {1234, 754, 309, 233}
   2:  Dim query = From i In integers _
   3:     From s In strings _
   4:     Where i.ToString().Contains(s) _
   5:     Select New With {s, i}
   6:  For Each i In query
   7:      Console.Out.WriteLine("{0}, {1}", i.s, i.i)
   8:  Next

En este caso usamos una consulta que une dos conjuntos y después se recorre la consulta para obtener los resultados.
Para aprender más sobre Linq visita:
Lista de artículos acerca de Linq

No hay comentarios:

Publicar un comentario