2015-12-01 2 views
0

Я новичок в Identity 2 и C#.Каков наилучший способ создания этого списка?

Я хочу создать список адресов электронной почты, связанных с пользователями, которые находятся в текущей выбранной роли, на что ссылается role.RoleId.

Я делаю это не так, я просто знаю это ....

до сих пор я пытался

List<UsersEmailViewModel> EmailList = new List<UsersEmailViewModel>() { new UsersEmailViewModel { Email = ???? } }

Не знаете, как создать элемент списка для каждого пользователя, который в Роль.

также начал пробовать

List<UsersEmailViewModel> EmailList = from l in UserManager.Users.Where(x => x.Roles.Any(y => y.RoleId == role.RoleId)) select new UsersEmailViewModel { Email = l.email }

Но получаю сообщение об ошибке, что он не может преобразовать.

if (user.Roles.Count() > 0) 
{ 
    List<IdentityUserRole> userRoles = user.Roles.ToList(); 

    foreach (var role in userRoles) 
    { 
     var dbrole = RoleManager.Roles.SingleOrDefault(x => x.Id == role.RoleId); 
     if ((UserManager.IsInRole(User.Identity.GetUserId(), "Admin")) || (UserManager.IsInRole(User.Identity.GetUserId(), "SuperAdmin"))) 
     { 
      boundUser.Roles.Add(new RoleViewModel() 
      { 
       RoleName = dbrole.Name, 
       RoleId = role.RoleId, 
       //EmailList = Want to create list of only Email Addresses of Accounts in Role 

      }); 
     } 
     else 
     { 
      boundUser.Roles.Add(new RoleViewModel() 
      { 
       RoleName = dbrole.Name, 
       RoleId = "Redacted", 
       EmailList = new List<UsersEmailViewModel>() { new UsersEmailViewModel { Email = "Redacted" } } 
      }); 
     } 
    } 
} 

public class RoleViewModel 
{ 
    public string RoleId { get; set; } 
    public string RoleName { get; set; } 
    public List<UsersEmailViewModel> EmailList { get; set; } 
} 

public class UsersEmailViewModel 
{ 
    public string Email { get; set; } 
} 

ответ

1

попробуйте следующее:

List<string> list = new List<string>(); 
var rs = context.Roles.Where(x => x.Name == role).SingleOrDefault().Id; // where role is your role in which you want to find 
var users = context.Users.Where(item => item.Roles.Any(x => x.RoleId == rs)).ToList(); 
foreach (var a in users) 
{ 
    list.Add(a.Email); 
} 
Смежные вопросы