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