You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Lambda表达式实现Users主表关联Departments、Locations参考表查询

实现代码

方式1:链式Join写法(和你现有代码逻辑一致,内连接)

在原有的单表关联基础上追加第二次Join关联Locations表即可,示例如下:

var userJoin = _db.Users
    // 关联部门表
    .Join(_db.Departments,
          user => user.DepartmentId,
          dept => dept.Id,
          (user, dept) => new { user, dept })
    // 关联位置表
    .Join(_db.Locations,
          preResult => preResult.user.LocationId,
          loc => loc.Id,
          (preResult, loc) => new { preResult.user, preResult.dept, loc })
    // 映射到自定义UserModel
    .Select(res => new UserModel
    {
        Id = res.user.Id,
        FirstName = res.user.FirstName,
        LastName = res.user.LastName,
        DepartmentName = res.dept.DepartmentName,
        LocationName = res.loc.LocationName
        // 其余字段按需补充映射
    }).ToList();

方式2:导航属性写法(EF/EF Core环境更推荐,可读性更高)

如果你的实体类已经配置了导航属性,直接用Include写法更简洁:

var userList = _db.Users
    .Include(u => u.Department)
    .Include(u => u.Location)
    .Select(u => new UserModel
    {
        Id = u.Id,
        FirstName = u.FirstName,
        LastName = u.LastName,
        DepartmentName = u.Department.DepartmentName,
        LocationName = u.Location.LocationName
    }).ToList();

以上两种写法默认都是内连接,若需要保留关联字段为空的用户数据(左连接),可以将Join替换为GroupJoin结合DefaultIfEmpty实现。

内容的提问来源于stack exchange,提问作者frank3579

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:15:08