martes, 4 de junio de 2013

Exprés: Consulta Linq sobre modelo Entity Framework con producto cartesiano.

Para realizar una consulta en LINQ con un producto cartesiano, lo haremos de la siguiente manera. Suponemos un contexto con las entidades "articulo" y "almacen" y necesitamos un listado con todos los artículos por almacenes. Seria lo siguiente:
01 IQueryable datos = (from c in contexto.articulos  
02    from d in contexto.almacenes                    
03    select new                    
04    {                        
05     articulo= c.articulo,                        
06     almacen = d.almacen                    
07    });
Suponemos que tenemos un contexto con las entidades "cliente" y "proveedor" cuya clave primaria es código en ambas. Además suponemos que si el código es el mismo, se refiere al mismo individuo, por tanto la consulta quedaría así:
01 IQueryable datos = (from c in contexto.clientes          
02    from d in contexto.proveedores                   
03    where c.codigo == d.codigoq                    
04    select new                    
05    {                        
06     codigo = c.articulo,                        
07     ventas = c.ventas,                        
08     compras = d.compras                    
09    });
También podría hacerse con un join:
01 IQueryable datos = (from c in contexto.clientes         
02    join d in contexto.proveedores 
03     on c.codigo equals d.codigo                    
04    select new                    
05    {                        
06     codigo = c.articulo,                        
07     ventas = c.ventas,                        
08     compras = d.compras                    
09    });
Hasta aquí el artículo exprés.

No hay comentarios:

Publicar un comentario