首页 > 后端开发 > C++ > 如何使用 LINQ Lambda 表达式执行多个表联接?

如何使用 LINQ Lambda 表达式执行多个表联接?

Patricia Arquette
发布: 2025-01-10 10:13:41
原创
558 人浏览过

How to Perform Multiple Table Joins Using LINQ Lambda Expressions?

使用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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板