使用LINQ Lambda表达式执行多表连接
LINQ允许使用lambda表达式连接多个表。假设我们有三个类:
<code>Product { Id, ProdName, ProdQty } Category { Id, CatName } ProductCategory { ProdId, CatId }</code>
使用Lambda表达式的连接
可以使用以下代码连接这些表:
<code>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 } );</code>
这将生成以下类的对象:
<code>QueryClass { productproductcategory, category }</code>
填充新对象
要使用连接结果属性填充新对象,可以使用以下Select方法:
<code>var categorizedProducts = query.Select(m => new { ProdId = ???, CatId = ???, // 其他赋值 });</code>
获取属性值
可以从连接的对象中获取要赋值的特定属性,如下所示:
<code>ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId CatId = m.c.CatId // 其他赋值</code>
查询语法替代方案
或者,可以使用查询语法,它提供了一种更简洁的方法:
<code>var categorizedProducts = from p in product join pc in productcategory on p.Id equals pc.ProdId join c in category on pc.CatId equals c.Id select new { ProdId = p.Id, // 或 pc.ProdId CatId = c.CatId // 其他赋值 };</code>
此查询的结果与lambda表达式方法相同。如果更注重可读性,建议使用查询语法。
以上是如何使用 LINQ Lambda 表达式执行多个表联接?的详细内容。更多信息请关注PHP中文网其他相关文章!