我可以让所有用户都喜欢这个
var users = UserManager.Users.ToList();
我可以找到像这样的角色
var role = db.Roles.SingleOrDefault(m => m.Name == "User");
我想在AspNetRoles表中列出所有角色名称为"User"的用户(我有User
和Admin
)。
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
。没有编译错误。
您可以使用以下代码来检索特定角色(Identity 2.x.x)中的所有用户:
var users = await _userManager.GetUsersInRoleAsync("RoleName");
或用于同步用法:
var users = _userManager.GetUsersInRoleAsync("RoleName").GetAwaiter().GetResult();
var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList();
您搜索所有用户并返回符合特定角色id 的用户
您尝试过使用导航属性Lazy Loading吗?
var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = role.Users;
您可以使用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();
对于Identity 2.0…和.NET Framework 4.5+
检查IdentityConfig.cs以确保角色管理器配置正确。
var roleManager=HttpContext.GetOwinContext().GetUserManager();
var users=roleManager.FindByName("管理员").users.ToList();