24

LINQ a fondo

Embed Size (px)

Citation preview

Page 1: LINQ a fondo
Page 2: LINQ a fondo
Page 3: LINQ a fondo

Introducción a LINQProveedores “predeterminados”Extendiendo LINQ a nuevos tipos de datos y libreríasRecomendaciones de usoLINQ después de .NET 3.5Demos

Page 4: LINQ a fondo

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.

Page 5: LINQ a fondo

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 });

Page 6: LINQ a fondo

Fuentes de consultasLos datos provienen de cierta fuente, que implementa IEnumerable<T>.

Operadores de consulta estándarNo todos los operadores tienen un reflejo en la sintaxis de los lenguajes. El patrón LINQ.

Page 7: LINQ a fondo

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>

Page 8: LINQ a fondo

Composicionales, jerárquicasAnidamiento arbitrario.Posibilidad de aplicar operadores adicionales.

Declarativas y no imperativasDiga qué usted desea obtener, no cómo.El cómo va por el proveedor.

Ejecución diferidaLas consultas se ejecutan solo a medida que sus resultados se solicitan.

Page 9: LINQ a fondo

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

Tecnología

EnsambladoEspacio de nombres

LINQ to Objects

System.Core.dll System.Linq

LINQ to XML

System.Xml.Linq.dll System.Xml.Linq

LINQ to DataSet

System.Data.DataSetExtensions.dll

System.Data

LINQ to SQL

System.Data.Linq.dll System.Data.Linq

LINQ to Entities

System.Data.Entity.dllSystem.Data.Objec

ts y otros

Silverlight 2.0

.NET 3.5 CF.NET 3.5

Page 10: LINQ a fondo

LINQ to Objects, XML, SQL, Entities

Page 11: LINQ a fondo

<libro> <titulo/> <autor/> <precio/></libro>

XML

Proveedores LINQ

C# 3.0 VB 9.0 Otros…

LINQ toObjects

LINQ toSQL

LINQ toXML

LINQ toEntities

LINQ toDataSets

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

(el suyo)

(el suyo)

Page 12: LINQ a fondo

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

Basados en IEnumerable<T>

Basados enIQueryable<T>

Interfaz IEnumerable<T> IQueryable<T>

Ejecución Local, en memoria Usualmente remota

Implementación IteradoresAnálisis de árboles de

expresiones

ProveedoresLINQ to Objects

LINQ to XMLLINQ to DataSet

LINQ to SQLLINQ to Entities

Mis ejemplosLINQ to PipesLoggingLINQ

LINQ to TFS

Page 13: LINQ a fondo

Habilite sus API existentes para LINQEspecí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.

Page 14: LINQ a fondo

Proveedores “a medida”

Page 15: LINQ a fondo

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.

Page 16: LINQ a fondo

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.0Los detalles de la traducción de la sintaxis en llamadas a operadores y cómo funcionan éstos.

Page 17: LINQ a fondo

Parallel LINQPasa 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

Page 18: LINQ a fondo

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 declarativoMuchos menos bucles “a la vista”.Código más fácil de leer y mantener.

Page 19: LINQ a fondo

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/

Page 20: LINQ a fondo

¡Conócenos!

Pregúntanos tus dudas

¡Entra en el sorteoY podrás ganar

alguno de estos libros sobre

.NET 3.5!

Page 21: LINQ a fondo

Plenaria

Evolución de la Plataforma de Servicios Windows Server 2008 para

desarrolladoresHands On Labs en Sala Mónaco y entrega de libro de Visual Studio 2008 y Demos en Zona de Exposición.

Page 22: LINQ a fondo

© 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.

Page 23: LINQ a fondo
Page 24: LINQ a fondo

Sistemas Externos

Capa de Datos

Presentación

Lógica de Negocio

Modelo Conceptual

(EDM)Entidad

esRelaciones

Modelo de Objetos

(Datasets/Objetos)Entidad

esRelaciones