我可以获得所有用户的集合,并使用一些Linq来订购他们,如下所示:
var Users = UserManager.Users.ToList().OrderBy(x => x.DateCreated)
我想将返回的用户限制为具有“ admin”或“ adminlower”角色的用户。我搜索了很多东西,发现像这样的东西,但它们无济于事:
http://aryalnishan.com.np/asp-net-mvc/list-all-users-with-associated-roles-in-asp-net-identity/
我已经尝试过了,但是也行不通:
var AdminRoles = new string[] { "admin", "adminlower" };
var Roles = RoleManager.Roles;
Roles.Contains(AdminRoles);
我似乎无法获取语法,该怎么办?
答案 0 :(得分:1)
我还没有测试过,但是您可能正在寻找类似的东西:
您可以通过这种方式获得roleId
。
var roleManager= new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
//Get admin role
var adminRole= roleManager.FindByName("Admin");
var admins=context.Users.Where(x=>x.Roles.Any(role=>role.RoleId==adminRole.Id)).ToList().OrderBy(d=>d.DateCreated);
另一种选择可能是加载所有用户,然后使用UserManager.IsInRoleAsync
循环浏览以过滤管理员。但是除非您的用户群很小,否则您不希望这样做。