Uso de la cláusula Join con expresiones Lambda

Tagged: entity framework linq sql join sql server 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

 

Add a Comment