Uso de la cláusula Join con expresiones Lambda
En esta ocasión les comparto el uso de la cláusula Join con expresiones Lambda.
Para comenzar vamos a utilizar el siguiente ejemplo:
Vamos a suponer que tenemos 2 tablas, una llamada Factura y otra DetalleFactura, usando un INNER JOIN de SQL Server para crear una consulta de estas tablas en LinqToSQL quedaría la siguiente expresión:
var consulta = from f in db.Factura
join df in db.DetalleFactura
on f.FacturaId equals df.FacturaId
select new { f.FacturaId, f.Cliente, df.ClaveArticulo, ... };
La expresión Lambda quedaría de la siguiente forma:
var consulta = db.Factura // Tabla padre
.Join(db.DetalleFactura, // Tabla hija
f => f.FacturaId, // FK
df => df.FacturaId, // PK
(f, fd) => new { Factura = f, DetalleFactura = df }) // Definimos los alias de las tablas
.Select(c => new { c.Factura.FacturaId, c.Factura.Cliente, df.DetalleFactura.ClaveArticulo); // Seleccionamos los campos que deseamos mostrar.
Como siempre espero que sea de utilidad esta aportación y considero que es algo muy útil para nuestros proyectos en donde utilizamos Entity Framework, pero es importante mencionarles que este tipo de expresiones también las podemos utilizar con la clase DataContext de LinqToSQL, es solo otra forma de escribir expresiones en el nuevo Framework 4.0
Saludos!
Víctor Alameda