C# 返回列表中包含的所有角色

C# 返回列表中包含的所有角色,c#,asp.net,C#,Asp.net,尝试返回字符串数组中指定了角色的所有用户 我尝试了一个如此链接所显示的反向逻辑,但这几乎错过了我试图完成的事情 string[] userRoles = { "2", "5", "6" }; var users = UserManager.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains("2").ToList(); 这将返回roleId为2的用户。我试图返回的是数组中指定角色的所有用户如果我理解您的

尝试返回字符串数组中指定了角色的所有用户

我尝试了一个如此链接所显示的反向逻辑,但这几乎错过了我试图完成的事情

  string[] userRoles = { "2", "5", "6" };

  var users = UserManager.Users.Where(x => x.Roles.Select(y => 
    y.RoleId).Contains("2").ToList();

这将返回roleId为2的用户。我试图返回的是数组中指定角色的所有用户

如果我理解您的要求,您将使用Where,Any,Contains


如果我理解你的要求,你会使用Where,Any,Contains

而不是

UserManager.Users.Wherex=>x.Roles.Selecty=> y、 RoleId.Contains2.ToList

你可以用

UserManager.Users.Whereuser=>user.Roles.Anyr=>userRoles.Anyur=>ur==r.RoleId.ToString.ToList

这里您是说希望所有用户都具有userRoles表中存在的任何角色ID,我认为这就是您要查找的。

而不是

UserManager.Users.Wherex=>x.Roles.Selecty=> y、 RoleId.Contains2.ToList

你可以用

UserManager.Users.Whereuser=>user.Roles.Anyr=>userRoles.Anyur=>ur==r.RoleId.ToString.ToList


在这里,您是说希望所有用户在userRoles表中都有任何角色ID,我认为这就是您要寻找的。

将ID存储为字符串感觉很奇怪though@Rafalon我知道。但它们已在用户的其他地方定义table@SeM我不这么认为,至少从标题来看是这样。OP希望获得具有特定角色的所有用户,而不是拥有所有角色的用户将ID存储为字符串感觉很奇怪though@Rafalon我知道。但它们已在用户的其他地方定义table@SeM我不这么认为,至少从标题来看是这样。OP希望获得具有特定角色的所有用户,而不是拥有所有角色的用户谢谢!!这对汉克斯很有帮助!!那有帮助
string[] userRoles = { "2", "5", "6" };

var users = UserManager.Users.Where(x => x.Roles.Any(y => userRoles.Contains(y.RoleId)))
                             .ToList();