Я пытаюсь выполнить команду . Соединитесь между несколькими таблицами в LINQ. У меня есть следующие классы:Как выполнить соединение между несколькими таблицами в LINQ lambda
Product {Id, ProdName, ProdQty}
Category {Id, CatName}
ProductCategory{ProdId, CatId} //association table
И я использую следующий код (где product
, category
и productcategory
являются экземпляры вышеуказанных классов):
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});
С помощью этого кода я получаю объект от следующий класс:
QueryClass { productproductcategory, category}
Где producproductcategory имеет тип:
ProductProductCategoryClass {product, productcategory}
Я не понимаю, где присоединился к «стол», я ожидал один класс, который содержит все свойства из участвующих классов.
Моя цель состоит в том, чтобы заполнить другой объект, с некоторыми свойствами в результате запроса:
CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });
как я могу достичь этой цели?
Я не понял ... почему ** m.ProdId = ??? ** вместо ** prodId = m.ProdId **? –
Потому что я не знаю заранее, как перемещаться и получать ProdId – CiccioMiami