我有下表,我需要一个查询,将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}
}
};
答案 0 :(得分: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();
}