У меня есть раскрывающийся список, в котором перечислены роли. Я хочу получить список пользователей, имеющих эту роль. Я имею в виду список пользователей, которые находятся в роли "Администратор" или "CanEdit". Вот мой код:
public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
GetRolesToUsers([Control] string ddlRole)
{
//ddlRole returns role Id, based on this Id I want to list users
var _db = new ApplicationDbContext();
IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;
if (ddlRole != null)
{
//query = query.Where(e => e.Claims == ddlRole.Value); ???????
}
return query;
}
Пожалуйста, помогите.
Обновленный код (по-прежнему ошибка)
public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{
var roleManager =
new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var users = roleManager.FindByName("Administrator").Users.ToList();
return users;
}
Ошибка: метод выбора должен возвращать один из "IQueryable" или "IEnumerable" или "Microsoft.AspNet.Identity.EntityFramework.IdentityUser", если ItemType установлен в "Microsoft.AspNet.Identity.EntityFramework.IdentityUser".
Я пробовал различные кастинги, но никто из них не помог.
UPDATE (рабочее решение)
Благодаря chris544, его идея помогла мне исправить это. Вот рабочий метод: -
public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
var context = new ApplicationDbContext();
var users =
context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(ddlRole)).ToList();
return users;
}