获取角色中的所有用户,ASP.NET标识

gopyfrb3  于 2022-11-26  发布在  .NET
关注(0)|答案(4)|浏览(135)

我可以让所有用户都这样

var users = UserManager.Users.ToList();

我能找到这样的角色

var role = db.Roles.SingleOrDefault(m => m.Name == "User");

我要列出AspNetRoles表中角色名为“User”的所有用户(我有UserAdmin)。

var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = db.Users.Where(m => m.Roles.Any(r => r.RoleId == role.Id)).ToList();

return View(usersInRole);

我得到了var role中的角色,但是当我调试时,userInRole给了我Count = 0。没有编译错误。

jrcvhitl

jrcvhitl1#

您可以使用以下代码检索特定角色中的所有用户(Identity 2.x.x):

var users = await _userManager.GetUsersInRoleAsync("RoleName");

或用于同步用法:

var users = _userManager.GetUsersInRoleAsync("RoleName").GetAwaiter().GetResult();
e5nqia27

e5nqia272#

var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList();

搜索所有用户并返回符合特定角色ID的用户

hrirmatl

hrirmatl3#

您是否尝试过使用导航属性Lazy Loading?

var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = role.Users;
6gpjuf90

6gpjuf904#

您可以使用基于Linq表达式查询,如下所示:

var roleUserIdsQuery=from role in db.Roles 
                where role.Name=="User"
                from user in role.Users
                select user.UserId;
var users=db.Users.Where(u=>roleUserIdsQuery.Contains(u.Id)).ToList();

相关问题