如何使用EF6从表中查询组



我有下面的表,我需要一个查询,它将roleId值分组到一个列表中,并将其放入DTO。示例和预期结果如下表所示。

我知道它不应该是复杂的东西,但我不知道如何…我看了几个例子,我只发现了一些例子,它们处理分组内容的计数,而不是它们的列表。

+----+--------+--------+
| id | userId | roleId |
+----+--------+--------+
|  1 | 1      |    1   |
+----+--------+--------+
|  2 | 1      |    2   |
+----+--------+--------+
| 3  |  2     |    1   |
+----+--------+--------+
public class UserRoleDto
    {
        public int userId { get; set; }
        public List<int> roleIds { get; set; }
    }

预期结果:

var res = new List<UserRoleDto>
            {
                new UserRoleDto()
                {
                    userId = 1,
                    roleIds = new List<int>() {1, 2}
                },
                new UserRoleDto()
                {
                    userId = 2,
                    roleIds = new List<int>() {1}
                }
            };

假设您已经将连接表映射为模型上的实体,您可以这样做:

using(var db=new YourContext())
{
    var res= db.UserRoles.GroupBy(ur=>ur.userId)
                         .Select(g=>new UserRoleDto()
                                    { 
                                      userId = g.Key,
                                      roleIds = g.Select(us=>us.roleId).ToList()
                                    } 
                                ).ToList();
}

相关内容

  • 没有找到相关文章

最新更新