2017-08-16 70 views
0

我得到了我的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因为某些原因保持为空。 有人能帮我一下吗?

回答

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(); 
} 
+0

我只是试过了。我仍然收到一个空的json数组。 – RottenCheese

+0

我在邮递员上的结果如下:[]。而且,我只是检查了角色名拼写正确。我甚至试图通过id找到它,但同样的事情发生。 – RottenCheese

+0

@RottenCheese你确定你的角色名是“教授”吗? –

相关问题