How to get all users in Role (Microsoft ASP.NET Identity EntityFramework 2.0.0-beta1)?
Solution 1
Its only exposed on the EF implementation layer so:
roleManager.FindByName("Admins").Users
Solution 2
The accepted answer returns CustomUserRoles
. If you are looking for the list of ApplicationUsers
, try:
public IList<ApplicationUser> GetApplicationUsersInRole(string roleName)
{
var selectedUserIds = from role in roleManager.Roles
where role.Name == roleName
from user in role.Users
select user.UserId;
// this _users comes from the ApplicationDbContext.ApplicationUser
return _users.Where(applicationUser => selectedUserIds.Contains(applicationUser.Id)).ToList();
}
Solution 3
I really liked VahidN's solution, but I modified it a bit. I made it into one query that uses the dbcontext. This allows you to add additional clauses into the query (e.g. deleted, emailconfirmed, etc.)
public IEnumerable<ApplicationUser> GetApplicationUsersInRole(string roleName)
{
return from role in context.Roles
where role.Name == roleName
from userRoles in role.Users
join user in context.Users
on userRoles.UserId equals user.Id
where user.EmailConfirmed == true
&& user.IsDeleted == false
select user;
}
Svitlana
My daily homework in programming: Famo.us https://www.youtube.com/playlist?list=PLPgDBCA1Cb3Op-wbmjvFJzTgI7yUZhQBl Famo.us Angular https://www.youtube.com/playlist?list=PLPgDBCA1Cb3O-JugWYffnfGjWxYFmvkf_ Angular Best Practices with Firebase 0.8 https://www.youtube.com/playlist?list=PLPgDBCA1Cb3ON9h32m3xDYV-uz1F7MVKQ
Updated on July 27, 2022Comments
-
Svitlana almost 2 years
I just updated to ASP.NET Identity EntityFramework 2.0.0-beta1 and got a compilation errors for my Roles classes. Maybe somebody can give me some clue how to get all users for a specific Role?
It's something very close, when I browse with Intellisense I am almost there, but need a tip :-).
This is how it worked before update:
user.Roles.First().Role.Name.Equals("Admins")