Reputation: 2384
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")
Upvotes: 9
Views: 13279
Reputation: 2773
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;
}
Upvotes: 8
Reputation: 19186
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();
}
Upvotes: 9
Reputation: 28200
Its only exposed on the EF implementation layer so:
roleManager.FindByName("Admins").Users
Upvotes: 11