Estoy tratando de realizar una unión entre varias tablas en LINQ. Tengo las siguientes clases:
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 obtengo un objeto de la siguiente clase:
QueryClass { productproductcategory, category}
Donde producproductcategory es de tipo:
ProductProductCategoryClass {product, productcategory}
No entiendo dónde está la "tabla" unida, esperaba una sola clase que contenga todas las propiedades de las clases involucradas.
Mi objetivo es poblar otro objeto con algunas propiedades resultantes de la consulta:
CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });
¿Cómo puedo lograr este objetivo?