I am stuck trying to get this output
Id | Name | Role
----------------------------
1 | John | Administrator
----------------------------
2 | Mary | Manag
If you are using ASP.NET Identity 2, you have to add some codes to AccountContoller. Add an ActionResult
to get UserList
. You also nedd ApplicationDbContext
instance and get it from 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,
Role = r.Name,
};
// users is anonymous type, map it to a Model
return View(users);
}
.
.
.
}
Update - if user has multiple roles:
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)
}
This will help you
using(ApplicationDbContext db=new ApplicationDbContext())
{
var users = (from user in db.Users
from roles in user.Roles
join role in db.Roles
on roles.RoleId equals role.Id
select new
{
user.UserName,
role.Name
}).ToList();
}