【发布时间】:2018-05-01 20:43:44
【问题描述】:
我有 3 个表:User、Roles 和 UserRoles,并且我有一个角色 ID 列表 { 2, 3, 4 }。我想返回所有 id 为 2、3 或 4 的用户。
型号:
public partial class User
{
public int Id { get; set; }
public virtual ICollection<UserRoles> UserRoles { get; set; }
}
public partial class Roles
{
public int Id { get; set; }
}
public partial class UserRoles
{
public int UserId { get; set; }
public int RoleId { get; set; }
public virtual Users Users { get; set; }
public virtual Roles Roles { get; set; }
}
还有我的代码:
int[] RoleIds = { 2, 3, 4 };
return await _dbContext.Users
.Where(u => u.UserRoles.Any(x=> RoleIds.Contains(x.RoleId)));
我不知道为什么,但我的结果包含 roleId == 1 的记录。
更新
我知道为什么.. 我的代码是正确的。 Mapper 类有问题。 我使用了类似 .FirstOrDefault().RoleId 的东西。所以它只返回第一个数据,并且一个用户可能有多个角色!谢谢各位
【问题讨论】:
-
aand,这是什么结果?
-
是的,你是对的,这个问题没有多大意义。但是您可能希望在 Linq 中提供两个/三个表的连接。
-
我的结果包含 roleId == 1 .. 的记录
标签: c# entity-framework