linq a fondo
DESCRIPTION
LINQ a FondoTRANSCRIPT
Octavio HernándezMentoring Team LeaderPlain Concepts
Introducción a LINQProveedores “predeterminados”Extendiendo LINQ a nuevos tipos de datos y libreríasRecomendaciones de usoLINQ después de .NET 3.5Demos
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 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.
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á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.
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
LINQ to Objects, XML, SQL, Entities
<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)
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
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.
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.0Los detalles de la traducción de la sintaxis en llamadas a operadores y cómo funcionan éstos.
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
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.
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
¡Entra en el sorteoY podrás ganar
alguno de estos libros sobre
.NET 3.5!
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.
© 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 Externos
Capa de Datos
Presentación
Lógica de Negocio
Modelo Conceptual
(EDM)Entidad
esRelaciones
Modelo de Objetos
(Datasets/Objetos)Entidad
esRelaciones