C# 如何在EF6中使用GROUPBY从表中查询?
我有下表,我需要一个查询,将roleId值分组到一个列表中,并将其放入DTO。示例和预期结果如下表所示 我知道它不应该是复杂的东西,但我不知道如何。。。我看了几个例子,我只找到了一些例子,它们处理的是分组内容的计数,而不是它们的列表C# 如何在EF6中使用GROUPBY从表中查询?,c#,linq,entity-framework,C#,Linq,Entity Framework,我有下表,我需要一个查询,将roleId值分组到一个列表中,并将其放入DTO。示例和预期结果如下表所示 我知道它不应该是复杂的东西,但我不知道如何。。。我看了几个例子,我只找到了一些例子,它们处理的是分组内容的计数,而不是它们的列表 +----+--------+--------+ | id | userId | roleId | +----+--------+--------+ | 1 | 1 | 1 | +----+--------+--------+ | 2 | 1
+----+--------+--------+
| id | userId | roleId |
+----+--------+--------+
| 1 | 1 | 1 |
+----+--------+--------+
| 2 | 1 | 2 |
+----+--------+--------+
| 3 | 2 | 1 |
+----+--------+--------+
public类UserRoleDto
{
public int userId{get;set;}
公共列表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}
}
};
var res=新列表
{
新UserRoleDto()
{
userId=1,
roleIds=新列表(){1,2}
},
新UserRoleDto()
{
userId=2,
roleIds=新列表(){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();
}
杰出的非常感谢你!select中的roleIds部分丢失。
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();
}