LINQ 查询对象列表,其中包含多个对象列表

LINQ query list of objects with multiple list of objects in it

我有以下table关系

User
  -List<Role>   on User.RoleId = Id
    -RoleDetail on Role.RoleDetailId = Id
    -Practice   on Role.PracticeId = Id

虽然我确实在 EF 中链接了所有这些实体,但当我使用 dbConext Include 查询 User 时,我只能访问 Roles,RoleDetail 和 Practice 不可访问,这是可以理解的。有什么方法可以更改我查询用户的方式以包含这些信息?

如果没有,我应该如何有效地加入这些table?我不希望针对每个用户的多个角色进行 foreach 循环,而是针对单个查询请求。任何 help/hint 表示赞赏。

查询具有角色的用户

users = _dbcontext.Users.Include(u => u.Roles)

加入

var userQuery = _userRepository.GetUser(searchTerm);
var roleQuery = _roleRepository.GetRole();
var test = from user in userQuery join role in roleQuery on user.Roles....

您需要在角色上使用两个 Include 来获取所有数据,如下所示:

users = _dbcontext.Users.Include(u => u.Roles).ThenInclude(x=>x.RoleDetail)
                        .Include(u => u.Roles).ThenInclude(x=>x.Practice)
                        .AsSplitQuery(); //highly recommend if you are using .Net >=5