尝试返回所有在字符串数组中指定角色的用户
我已经尝试了一个SO链接显示的后向逻辑,但是却几乎错过了我要完成的工作
string[] userRoles = { "2", "5", "6" };
var users = UserManager.Users.Where(x => x.Roles.Select(y =>
y.RoleId).Contains("2").ToList();
这将明显返回具有roleId 2的用户。我要返回的是所有在数组中指定角色的用户
答案 0 :(得分:4)
如果我了解您的要求,则可以使用Where
,Any
,Contains
string[] userRoles = { "2", "5", "6" };
var users = UserManager.Users.Where(x => x.Roles.Any(y => userRoles.Contains(y.RoleId)))
.ToList();
答案 1 :(得分:1)
代替
UserManager.Users.Where(x => x.Roles.Select(y =>
y.RoleId).Contains("2").ToList();
您可以使用
UserManager.Users.Where(user => user.Roles.Any(r => userRoles.Any(ur=> ur == r.RoleId.ToString()))).ToList();
这里是说您希望所有具有userRoles表中存在的Ids角色的用户,这就是您要寻找的。 p>