查找具有特定角色的用户



我的代码是:

public async Task<ActionResult> Index()
{
    var teaching = db.Teachings.Include(d =>d.Course).Include(d=>d.Group).Include(d => d.User);
    return View(await teaching.ToListAsync());
}

我想知道如何过滤一些角色,我的意思是,如果可以的话,我如何只过滤具有特定角色的用户。

我认为可能的解决方案可能是....Include(d => d.Users).Where(...),但我不知道如何比较我正在扮演的用户的角色,并具有特定的角色。

我的角色是老师,管理员或学生。

总而言之,仅过滤角色"老师"的用户。

假设您正在使用ASP.NET提供的身份框架,则可以使用UserManager实现这一目标。

在usermanager中,它具有适合您的函数,即getUserSinroleasync(string rolename(。这将返回您的角色列表。

您只能做

var userThatYouWant = await _userManager.GetUsersInRoleAsync("RoleName");

和voila,列表将包含所有用户,其中包含您指定的角色。

这是假设您是否正确初始化了_usermanager。

您可以为您编写一个Linq,选择与其角色的任何相关的所有老师这,用于您的参考

var teaching = db.Teachings
                    .Include(d =>d.Course)
                    .Include(d=>d.Group)
                    .Include(d => d.User)
                    .Include(d => d.User.Roles)
                    .Where(d => d.User.Roles.Any(r => r.Name == "teacher")));

一种简单的方法是使用Identity的Usermanager类。它具有 userInrole 函数,可返回bool。您可以做的是通过用户迭代并检查此功能。

样本:

foreach(var user in Users)
{
    var isInRole = UserManager.UserInRole(user, "RoleName");
}

也许您可以尝试:db.teachings.include(d => d.course(.include(d => d.group(.include(d => d.user.Where(US => ur.role => ur.role =="老师"((; <<<<<<<</p>

我希望这会有所帮助!

相关内容

  • 没有找到相关文章