加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 获取在Identity 2中具有指定角色的用户列表

发布时间:2020-12-16 04:32:40 所属栏目:asp.Net 来源:网络整理
导读:我被困在试图得到这个输出 Id | Name | Role----------------------------1 | John | Administrator----------------------------2 | Mary | Manager----------------------------3 | Sage | Editor----------------------------4 | Hank | Manager 我可以使
我被困在试图得到这个输出
Id | Name   | Role
----------------------------
1  | John   | Administrator
----------------------------
2  | Mary   | Manager
----------------------------
3  | Sage   | Editor
----------------------------
4  | Hank   | Manager

我可以使它在LINQPad中工作,但不知何故我无法将其转换为ASP.NET MVC.

from u in Users
from ur in u.Roles
join r in Roles on ur.RoleId equals r.Id
select new {
    Id = u.Id,Name = u.Name,Role = r.Name,}

我如何LINQ在ASP.NET MVC 5中使用Identity?

为了清楚起见,我正在寻找用户和角色之间的JOIN查询.

解决方法

如果您使用的是ASP.NET Identity 2,则必须向AccountContoller添加一些代码.添加ActionResult以获取UserList.您还需要ApplicationDbContext实例并从OwinContext获取它:
public class AccountController : Controller
{
    private ApplicationUserManager _userManager;
    private ApplicationSignInManager _signInManager;

    public AccountController(ApplicationUserManager userManager,ApplicationSignInManager signInManager)
    {
        UserManager = userManager;
        SignInManager = signInManager;
    }

    public ActionResult UserList()
    {
        var applicationDbContext = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
        var users = from u in applicationDbContext.Users
                    from ur in u.Roles
                    join r in ApplicationDbContext.Roles on ur.RoleId equals r.Id
                    select new
                    {
                        u.Id,Name = u.UserName,};

            // users is anonymous type,map it to a Model 
            return View(users);
    }
    .
    .
    .
}

更新 – 如果用户有多个角色:

from user in applicationDbContext.Users
select new
{
    user.Id,user.UserName,Roles = applicationDbContext.Roles.Where(r => user.Roles.Select(ur => ur.RoleId).Contains(r.Id)).Select(r => r.Name)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读