I can get all users like this
var users = UserManager.Users.ToList();
I can find a role like this
var role = db.Roles.SingleOrDefault(m => m.Name == "User");
I want to list all users with the role name "User" in the AspNetRoles table (I have User
and 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);
I get the role in var role
but userInRole
gives me Count = 0
when I debug. No compile errors.
You can use bellow code for retrieve all users in specific role (Identity 2.xx):
var users = await _userManager.GetUsersInRoleAsync("RoleName");
or for synchronize usage:
var users = _userManager.GetUsersInRoleAsync("RoleName").Result;
var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList();
您搜索所有用户并返回符合特定角色ID的用户
Have you tried to use navigation properties Lazy Loading ?
var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = role.Users;
you can use Linq expression base query like below :
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();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.