【问题标题】:What is the best way to create this list?创建此列表的最佳方法是什么?
【发布时间】:2015-12-01 06:51:19
【问题描述】:

我是 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; }
}

【问题讨论】:

    标签: c# linq asp.net-identity asp.net-identity-2


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多