从 User 表中获取嵌套的 UserRoles

Posted

技术标签:

【中文标题】从 User 表中获取嵌套的 UserRoles【英文标题】:Get nested UserRoles from User table 【发布时间】:2022-01-07 13:54:41 【问题描述】:

我正在从数据库中查询并且有嵌套表。我的查询如下所示:

  System.Collections.Generic.IEnumerable<ApplicationUser> applicationUsers = await _userManager.Users
        .Include(u => u.UserRoles).ToListAsync();

我想获取所有 UserRole ID 和角色名称,所以我这样做了:

  IEnumerable<List<UserRole>> userRoles = applicationUsers.Select(person => person.UserRoles.Select(u => new UserRole
        
          Id = u.RoleId,
          RoleName = u.Role.ToString(),
        ).ToList());

但是,当我需要List&lt;UserRole&gt; 时,我得到IEnumerable&lt;List&lt;UserRole&gt;&gt; 的输出。我做错了什么?

UserRole.cs:

  public class UserRole
  
    public string Id  get; set; 
    public string RoleName  get; set; 
    public bool Successful  get; set; 

  

【问题讨论】:

尝试用 SelectMany 替换第一个选择。 【参考方案1】:

使用

List<UserRole> userRoles = applicationUsers.SelectMany(person => person.UserRoles).ToList();

【讨论】:

以上是关于从 User 表中获取嵌套的 UserRoles的主要内容,如果未能解决你的问题,请参考以下文章

Lua - 从嵌套表中获取值

Laravel 嵌套的 foreach 返回重复项

MySQL 从两个不同的表中获取 user_id 和密码的查询

如何通过模型关系从三个相关表中获取数据?

查询从名为 user 和 connection 的两个表中获取连接列表

如何从一个表中获取包含另一表的详细信息的记录计数