How to get the IDs of IdentityRoles for which a user is enrolled in MVC 5
asp.net, asp.net-identity, asp.net-mvc, asp.net-mvc-5, user-roles
Solution
I think you need to query the ApplicationDbContext for it as there's no obvious way to get it with a single call from the `UserManager` or `UserStore` APIs...
var context = new ApplicationDbContext();
var roles = await context.Users
.Where(u => u.Id == userId)
.SelectMany(u => u.Roles)
.Join(context.Roles, ur => ur.RoleId, r => r.Id, (ur, r) => r)
.ToListAsync();
Problem
I am trying to get an `IList<ApplicationRole>` of roles in which a user is currently enrolled. Now in the `UserManager` class I see there is a function called `GetRolesAsync()`, but it just returns a list of role names `IList<String>`. This doesn't help me as I need not only the `Name` property, but also the `Id` and `Description` properties of the roles. How can I make a similar call but receive an `IList<ApplicationRole>` list of roles back and not an `IList<String>` of role names? ApplicationRole ``` public class ApplicationRole : IdentityRole { [Display(Name = "Description")] [StringLength(100, MinimumLength = 5)] public string Description { get; set; } } ```