如何从特定角色获取所有用户

时间:2017-08-16 18:11:05

标签: c# asp.net entity-framework asp.net-identity

我的Users被分为两类:StudentProfessor,我试图让所有用户都在Professor角色中,但是我不知道我做错了什么。

这是我尝试这样做的代码:

RoleManager<IdentityRole> roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
List<IdentityUserRole> professors = roleManager.FindByName("Professor").Users.ToList();

List<AppUser> users = new List<AppUser>();

foreach(IdentityUserRole iuser in professors)
{
    AppUser user = manager.FindById(iuser.UserId);
    users.Add(user);
}
由于某种原因,

Professors仍然为空。 有人可以帮我一把吗?

1 个答案:

答案 0 :(得分:0)

我怀疑它是否已经存在用于此目的的内置函数,但您可以通过这种方式获得用户:

public async Task GetUsersInRole()
{
    ApplicationDbContext context = new ApplicationDbContext();
    var roles = context.Roles.Where(r => r.Name == "Professor");
    if (roles.Any())
    {
        var users = await UserManager.Users.ToListAsync();
        var result = (from c in users
                       where c.Roles.Any(r => r.RoleId == roles.First().Id)
                       select c);
    }
}

并调用这样的方法:

public async Task<ActionResult> Index()
{
    await GetUsersInRole();
    return View();
}