Estoy tratando de realizar un Únete entre varias tablas en LINQ. Tengo las siguientes clases:Cómo realizar la unión Une entre múltiples tablas en LINQ lambda
Product {Id, ProdName, ProdQty}
Category {Id, CatName}
ProductCategory{ProdId, CatId} //association table
Y uso el siguiente código (donde product
, category
y productcategory
son instancias de las clases anteriores):
var query = product.Join(productcategory, p => p.Id, pc => pc.ProdID, (p, pc) => new {product = p, productcategory = pc})
.Join(category, ppc => ppc.productcategory.CatId, c => c.Id, (ppc, c) => new { productproductcategory = ppc, category = c});
Con este código puedo obtener un objeto de la clase siguiente:
QueryClass { productproductcategory, category}
Dónde producproductcategory es de tipo:
ProductProductCategoryClass {product, productcategory}
No entiendo que la unió "mesa" es, que estaba esperando una sola clase que contiene todas las propiedades de las clases involucradas.
Mi objetivo es poblar otro objeto con algunas propiedades que resultan de la consulta:
CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });
cómo puedo alcanzar este objetivo?
No entendí ... ¿por qué ** m.ProdId = ??? ** en lugar de ** prodId = m.ProdId **? –
Porque no sé de antemano cómo navegar y obtener ProdId – CiccioMiami