【发布时间】:2012-03-31 23:45:55
【问题描述】:
我正在尝试在 LINQ 中执行 多个表之间的联接。我有以下课程:
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}
productproductcategory 的类型为:
ProductProductCategoryClass {product, productcategory}
我不明白连接的“表”在哪里,我期待一个包含相关类的所有属性的单个类。
我的目标是用查询产生的一些属性填充另一个对象:
CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });
我怎样才能实现这个目标?
【问题讨论】:
-
我不明白...为什么是 m.ProdId = ??? 而不是 prodId = m.ProdId?
-
因为我事先不知道如何导航和获取 ProdId
标签: c# linq join lambda multiple-tables