Anda di halaman 1dari 21

Programacin con C# .

NET

Tema 4:
Introduccin a LINQ
Introduccin a LINQ
Language Integrated Query (LINQ) es un componente
de Microsoft .Net Framework 3.5 que aade la capacidad de
realizar consultas nativamente a travs de los lenguajes
.Net ( C#, VB) usando una sintaxis similar a la de SQL.

Es un modelo de programacin que simplifica y unifica la


implementacin de acceso a cualquier tipo de datos.

Visual Studio incluye ensamblados de proveedores para


LINQ que habilitan su uso en colecciones, bases de datos
de SQL Server, conjuntos de datos de ADO.NET,
documentos XML y cualquier coleccin de objetos que
admita la interfaz IEnumerable o la interfaz genrica
IEnumerable<T> (espacio de nombres
System.Collections.Generic)
Porqu LINQ?
Con frecuencia los programas deben acceder a diferentes dominios de
datos:
Un documento XML
Objetos en memoria
Una base de datos

Cada dominio de datos tiene su propio modelo de acceso:


Base de datos -> SQL
XML -> DOM, Xquery
Se utilizan los mismos modelos de codificacin para consultar los
datos en tipos de formatos y orgenes de datos diferentes

Siempre trabaja con objetos


Disminuye la brecha entre los objetos y los datos
Arquitectura de LINQ
Consultas en LINQ
La expresin bsica de la consulta contiene tres clausulas
SELECT FROM WHERE

FROM especifica el origen de datos


WHERE aplica el filtro
SELECT especifica el tipo de los elementos devueltos

Aqu, lo importante es que, en LINQ, la propia variable de


consulta no realiza ninguna accin ni devuelve datos.
Simplemente almacena la informacin necesaria para
generar los resultados cuando la consulta se ejecute
posteriormente.
Consultas en LINQ (Ejemplo)
LINQ trabaja en base a
consultas, por lo tanto
todas las operaciones se
componen de la siguiente
manera:

1. Obtencin del Origen de Datos


2. Creacin de la Consulta
3. Ejecucin de la Consulta

En el ejemplo se muestra cmo se expresan las tres partes de una


operacin de consulta. Se utiliza por comodidad una matriz de enteros
como origen de datos, pero los mismos conceptos se aplican a otros
orgenes de datos.
En LINQ, la ejecucin de la consulta es distinta de la propia consulta; en otras
palabras, no se recuperan datos con la simple creacin de la variable de
consulta.
LINQ y Tipos Genricos
Las consultas LINQ se basan en tipos genricos, que se
incluyeron por primera vez en el .Net Framework 2.0
Al crear una instancia de una clase de coleccin genrica
List<T>, la T se reemplaza con el tipo de objeto que
contendr la lista.
Por ejemplo, una lista de cadenas se expresa como List<string>
y una lista de objetos Customer se expresa como
List<Customer>

IEnumerable<T> es la interfaz que permite enumerar las


clases de coleccin genricas mediante la instruccin
foreach.
Las clases de coleccin genricas admiten IEnumerable<T> de
la misma forma que las clases de coleccin no genricas, como
ArrayList, admiten IEnumerable
Variables IEnumerable <T>
Las variables de consulta LINQ tienen tipos IEnumerable<T> o un tipo
derivado, como IQueryable<T>.
Cuando hay una variable de consulta de tipo IEnumerable<Customer>, slo
significa que la consulta, cuando se ejecute, generar una secuencia de cero
o ms objetos Customer:
Alternativa
Evitar la sintaxis genrica con el uso de la palabra clave var

La palabra clave var indica al compilador que deduzca el tipo de


una variable de consulta examinando el origen de datos
especificado en la clusula FROM

La palabra clave var es til cuando el tipo de la variable es obvio


o cuando no es tan importante especificar explcitamente los
tipos genricos
En la ilustracin vemos el uso de la palabra clave var.
Se genera el mismo cdigo compilado en ambos casos.
Variantes de LinQ
LINQ to Objects
LINQ to Xml
LINQ to ADO .NET
LINQ to DataSet
LINQ to Entities
LINQ to SQL
LINQ to Objects
Permite el acceso a datos en memoria usando la
tecnologa de LINQ

La condicin es que esos datos expongan IEnumerable


o IEnumerable<T>

Los arrays, colecciones, listas, etc. cumplen con esta


condicin
LINQ to XML
Permite el acceso a datos XML usando la tecnologa de
LINQ

Puede consultar y modificar el documento

Permite escribir consultas en el documento XML en


memoria para recuperar colecciones de elementos y
atributos
LINQ to ADO .NET
Permite el acceso a datos ADO .NET usando la
tecnologa de LINQ

Se incluyen otras tecnologas:


LINQ to DataSet
LINQ to Entities
LINQ to SQL
Ejecucin Aplazada
Es importante saber que:
LINQ mantiene la consulta en la variable usada
Cada vez que usemos la variable se ejecutar la
consulta
Esto nos permite tener la consulta siempre
actualizada, es lo que se conoce como ejecucin
aplazada (deferred execution)
Ejecucin Inmediata
Si queremos que la consulta solo se ejecute una vez o
de forma inmediata, debemos usar algn mtodo que
la "lance" y la saque del estado "hibernado" en el que
est

Si queremos que esos datos siempre sean los mismos


y no nos interese que se actualicen, usaremos lo que
se conoce como ejecucin inmediata
Ejecucin Inmediata (cont.)
El "truco" es asignar esos datos a una variable usando
el mtodo ToArray, tambin ToList o ToDictionary

De esa forma, los datos que habr en la variable de la


consulta permanecern aunque se cambie algo que
afecte a la seleccin realizada

Aunque si se cambian algunos de esos datos, se


reflejarn los cambios, pero no se "refrescar" la
consulta
Ejecucin Inmediata (Ejemplo)

En la segunda ejecucin de la
consulta, aunque se haya
aadido el nombre Patricia
ste no aparece, slo
Pedro y Pablo
Operadores de LINQ
LINQ tiene muchos operadores y bsicamente, estos
nos permiten filtrar, enumerar y crear proyecciones de
varios tipos de colecciones.
Clasificacin:
Filtrado
Proyeccin
Particionado
Unin
Concatenacin
Ordenacin
Agrupacin
Operadores de LINQ (cont.)
Conjunto
Conversin
Igualdad
Elemento
Generacin
Cuantificadores
Agregacin

Para ver una descripcin completa y ejemplos, consulte el documento


proporcionado.

Anda mungkin juga menyukai