Este documento presenta una introducción a LINQ (Language Integrated Query), un conjunto de herramientas de Microsoft para realizar consultas a distintas fuentes de datos como objetos, XML y bases de datos. Explica cómo LINQ permite realizar consultas de forma similar a SQL y mapea automáticamente los resultados a objetos. También muestra ejemplos de consultas básicas como seleccionar, filtrar, ordenar y agrupar datos usando LINQ.
2. Sé amable, porque toda persona que conoces
está librando una gran batalla
3. Objetivo
1. Adquirir los conceptos
básicos relacionados con
Visual Studio
2. Reconocer las
características de Visual
Studio
● 3.2 LINQ y aplicaciones
especiales
Contenido
5. LINQ
LINQ (Language Integrated Query) ó lenguaje integrado de consultas ,
son un conjunto herramientas de Microsoft para realizar todo tipo de
consultas a distintas fuentes de datos: objetos, xmls, bases de datos,
etc...
Para ello, usa un tipo de funciones propias, que unifica las
operaciones más comunes en todos los entornos, con esto, se
consigue un mismo lenguaje para todo tipo de tareas con datos.
6. LINQ
• LINQ nace en el Framework 3.5 y pronto coge una gran aceptación
entre el mundo de .net, tanto es asi, que enseguida salen
proveedores de terceros, para el uso de este lenguaje con JSON,
CSVs, o inclusos APIs como la de Twitter y Wikipedia.
• Para poder hacer uso de esta API y aprovechar todas las
características de la misma debemos hacer referencia al ensamble
System.Data.Linq.dll y en código al namespace System.Data.linq.
7. LINQy SQL
Consultas integradas en el lenguaje
Linq maneja una
sintaxis muy similar
a SQL.
Es fácil de aprender
Mapping
La correspondencia
entre SQL y Linq
hace que se aplique
la estructura de
Objetos para
facilitar el desarrollo
Persistencia
Linq controla
automáticamente
los cambios en la
base de datos.
10. QUERYABLETYPES
● Los tipos que soportan IEnumerable<T> o derivan de interfaces como
IQueryable<T> son llamados Queryable Types
● Un objeto “queryable type” no requiere modificación ni trato especial
para servir como datasource de LINQ.
● Si los datos orígenes no están en memoria como “queryable type”, el
proveedor de LINQ debe representarlo como si estuviera.
11. Operadoresmás Comunes
• Select / SelectMany
• Where
• Sum / Min / Max / Average / Aggregate
• Join / GroupJoin
• GroupBy
• OrderBy / ThenBy
19. Ventajas
SELECT TOP 10 UPPER
(c1.Name)
FROM Customer c1
WHERE
c1.Name LIKE 'A%'
AND c1.ID NOT IN
(
SELECT TOP 20 c2.ID
FROM Customer c2
WHERE c2.Name LIKE 'A%'
ORDER BY c2.Name
)
ORDER BY c1.Name
Aquí tenemos la misma consulta
pero en LINQ.
var query = from c in db.Customers
where c.Name.StartsWith("A")
orderby c.Name
select c.Name.ToUpper();
var thirdPage = query.Skip(20).Take(10);
20. IQueryable<Customer> GetCustomers (string state, decimal minPurchase)
{
var query = Customers.AsQueryable();
if (state != null)
query = query.Where (c => c.Address.State == "WA");
if (minPurchase != null)
query = query.Where (c => c.Purchases.Any (p => p.Price > minPurc
hase.Value));
return query;
}
SELECT [t0].[ID], [t0].[Name], [t0].[AddressID]
FROM [Customer] AS [t0]
LEFT OUTER JOIN [Address] AS [t1] ON [t1].[ID] =
[t0].[AddressID]
WHERE (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Purchase] AS [t2]
WHERE ([t2].[Price] > @p0) AND ([t2].[CustomerID] =
[t0].[ID])
)) AND ([t1].[State] = @p1)
Ventajas
21. Desventajasde LINQ
A pesar de su poder, LINQ no deja obsoleto a SQL. Toma más del 95% de la
funcionalidad de las queries, pero se seguirá necesitando SQL para:
● Queries que busquen máxima optimización.
● Queries que involucren seleccionar en tablas temporales y luego
consultar esas tablas.
● Triggers
22. Conclusiones
LINQ nos permite modelar la capa de datos de nuestras aplicaciones de una
forma simple y limpia.
Una vez que hayamos definido nuestro modelo de datos, podemos realizar
consultas, inserciones, actualizaciones y borrados sobre ella de forma fácil y
eficiente.