2016-03-29 6 views
2

я могу получить все пользователи, как этотПолучить всех пользователей в роли. ASP.NET Идентичность

var users = UserManager.Users.ToList(); 

я могу найти роль, как этот

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 

Я хочу, чтобы список всех пользователей с именем роли «User» в AspNetRoles таблица (у меня есть User и Admin).

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 
var usersInRole = db.Users.Where(m => m.Roles.Any(r => r.RoleId == role.Id)).ToList(); 

return View(usersInRole); 

Я получил роль в var role но userInRole дает мне Count = 0, когда я отладки. Ошибок компиляции нет.

ответ

0

Вы пытались использовать навигационные свойства Lazy Загрузка?

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 
var usersInRole = role.Users; 
+0

Ошибка «Модель элемент, переданный в словарь, имеет тип «System.Collections.Generic.List'1 [Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole]», но для этого словаря требуется элемент модели типа «System.Collections.Generic.IEnumerable'1 [Dignita na.Models.ApplicationUser].» – Anders

2
var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList(); 

Вы поиск по всем пользователям и возвращает те, которые соответствуют определенной роли идентификатор

+0

Пожалуйста, объясните свой ответ словами тоже –

+0

Готово. В самом деле. Его довольно объяснительно – Eminem

+0

Пожалуйста, выберите ответ, если это помогло – Eminem

0

вы можете использовать Linq выражение базовый запрос, как показано ниже:

var roleUserIdsQuery=from role in db.Roles 
       where role.Name=="User" 
       from user in role.Users 
       select user.UserId; 
var users=db.Users.Where(u=>roleUserIdsQuery.Contains(u.Id)).ToList(); 

 Смежные вопросы

  • Нет связанных вопросов^_^