Está en la página 1de 24

Introducción a LINQ

Proveedores “predeterminados”
Extendiendo LINQ a nuevos tipos de
datos y librerías
Recomendaciones de uso
LINQ después de .NET 3.5
Demos
Mecanismo uniforme y extensible para
consultar fuentes de datos de
diferentes tipos: las expresiones de
consulta.
Sintaxis basada en nuevas palabras
reservadas contextuales.
Semántica “enchufable”: los lenguajes
no definen la semántica de las nuevas
palabras reservadas, sino únicamente
un conjunto de reglas para reescribir
esas expresiones como cascadas de
llamadas a métodos.
var delMadrid =
from f in DatosFutbol.Futbolistas
where f.CodigoClub == “RMA"
select new { f.Nombre, f.Edad };

var delMadrid =
DatosFutbol.Futbolistas
.Where(f => f.CodigoClub == “RMA")
.Select(f => new { f.Nombre, f.Edad });
Fuentes de consultas
Los datos provienen de cierta fuente, que
implementa IEnumerable<T>.

Operadores de consulta estándar


No todos los operadores tienen un reflejo
en la sintaxis de los lenguajes.
El patrón LINQ.
Restricción Where
Proyección Select, SelectMany
Ordenación OrderBy, ThenBy
Agrupación GroupBy
Encuentros Join, GroupJoin
Cuantificadores Any, All
Partición Take, Skip, TakeWhile, SkipWhile
Conjuntuales Distinct, Union, Intersect, Except
Un elemento First, Last, Single, ElementAt
Agregados Count, Sum, Min, Max, Average
Conversión ToArray, ToList, ToDictionary
Conversión de elementos OfType<T>, Cast<T>
Composicionales, jerárquicas
Anidamiento arbitrario.
Posibilidad de aplicar operadores
adicionales.
Declarativas y no imperativas
Diga qué usted desea obtener, no cómo.
El cómo va por el proveedor.
Ejecución diferida
Las consultas se ejecutan solo a medida
que sus resultados se solicitan.
Tecnologí Espacio de
Ensamblado
a nombres
LINQ
System.Core.dll System.Linq
to Objects
LINQ
System.Xml.Linq.dll System.Xml.Linq
Basados
to XML en IEnumerable<T> Basados en
LINQ IQueryable<T>
System.Data.DataSetExtension
System.Data
to DataSet s.dll
LINQ
System.Data.Linq.dll System.Data.Linq
to SQL

LINQ System.Data.Objec
System.Data.Entity.dll
to Entities ts y otros

Silverlight 2.0
.NET 3.5 .NET 3.5 CF
LINQ to Objects, XML, SQL,
Entities
C# 3.0 VB 9.0 Otros…

Proveedores LINQ
Basados en IEnumerable<T> Basados en
IQueryable<T>
LINQ to LINQ to LINQ to (el LINQ to LINQ to (el
Objects XML DataSets suyo) SQL Entities suyo)

<libro>
<titulo/>

<autor/>

<precio/>
</libro>

XML
Basados en Basados en
IEnumerable<T> IQueryable<T>

Interfaz IEnumerable<T> IQueryable<T>

Ejecución Local, en memoria Usualmente remota


Basados en IEnumerable<T> Basados en
Análisis de árboles de
Implementación Iteradores IQueryable<T>
expresiones
LINQ to Objects
LINQ to SQL
Proveedores LINQ to XML
LINQ to Entities
LINQ to DataSet
LINQ to Pipes
Mis ejemplos LINQ to TFS
LoggingLINQ
Habilite sus API existentes para LINQ
Específicamente para consultas en
memoria.
Cree métodos extensores que devuelvan
un objeto IEnumerable<T>.
Desarrolle su propio proveedor de
consultas
Implemente IQueryable<T>.
Analice árboles de expresiones y traduzca
nodos a código o a un lenguaje de
consultas diferente.
Proveedores “a medida”
Analice cuándo y cómo sus consultas se
ejecutan
Momento de ejecución.
Ejecución local vs. remota.
Lugar/capa de ejecución real.
Mantenga las consultas dentro de
ensamblados
No pase expresiones de consulta entre
capas.
Cuidado con los tipos anónimos!
Planifique de antemano qué tipos son
importantes.
No abuse de las proyecciones.
Aprenda:
A escribir consultas con y sin la sintaxis.
Las nuevas características de C# 3.0
Los detalles de la traducción de la sintaxis
en llamadas a operadores y cómo
funcionan éstos.
Parallel LINQ
Pasa partes de una consulta a diferentes
núcleos/procesadores.
Proveedores de consultas de terceros:
LINQ to Amazon, LDAP, SharePoint,
NHibernate, MySql, Flickr, … y mucho
más.
LINQ 2.0
LINQ es un mecanismo uniforme y
extensible para consultar fuentes de
datos de diferentes tipos
LINQ cambiará la forma en que
escribimos código.
Más declarativo
Muchos menos bucles “a la vista”.
Código más fácil de leer y mantener.
 Centro de desarrollo C# de MSDN
 http://msdn.microsoft.com/vcsharp/
 Mi libro, “C# 3.0 y LINQ”
 http://www.krasispress.com/
 Revista dotNetManía
 http://www.dotnetmania.com/
 ¡Conócenos!
 Pregúntanos tus dudas

¡Entraen el sorteo
Y podrás ganar
alguno
de estos libros sobre
.NET 3.5!
Plenaria

Evolución de la Plataforma de Servicios


Windows Server 2008 para
desarrolladores
Hands On Labs en Sala Mónaco y entrega de libro de
Visual Studio 2008 y Demos en Zona de Exposición.
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S.
and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Sistemas Capa de Datos
Externos

Lógica de Modelo de
Objetos
Negocio (Datasets/Obj
etos)
Entidad
Relacio
es
nes
Presentació
n Modelo
Conceptual
(EDM)
Entidad
Relacio
es
nes