ASP.net Identity - получить коллекцию пользователей в роли «admin» или «adminlower» - PullRequest
1 голос
/ 19 мая 2019

Я могу получить коллекцию всех пользователей и заказать их с помощью 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);

Я просто не могу понять синтаксис, как я могу это сделать?

1 Ответ

1 голос
/ 19 мая 2019

Я не проверял это, но вы, вероятно, ищете что-то похожее:

Вы можете получить 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 для фильтрации администраторов.Но вы не хотите этого делать, если у вас не достаточно небольшая база пользователей.

...