0

我有一个要分配给用户的角色列表:

var role1 = new Role { ApplicationName = "XXX", RoleName = "ROLE1" };
var role2 = new Role { ApplicationName = "XXX", RoleName = "ROLE2" };
var role3 = new Role { ApplicationName = "XXX", RoleName = "ROLE3" };

List<Role> listRoles = new List<Role>
{
    role1,
    role2,
    role3
};

我可以像这样分配一个特定的角色:

var userRoles = new List<Role> 
{
    listRoles.First(x => x.RoleName == "ROLE1")
}

假设我有一个包含列出角色的字符串要添加到我的用户

string listRoles = "ROLE1;ROLE3";

我的问题:如何为我的用户分配角色列表?

我尝试:

var userRoles = new List<Role> 
{
    foreach(var role in listRoles.Split(";")
    {
        listRoles.First(x => x.RoleName == role);
    }
}

我得到编译错误。

4

2 回答 2

1

您有编译错误,因为您listRoles对字符串和原始角色列表使用相同的变量名。

var rolesToAssign = "ROLE1;ROLE3";
var matchingRoles = rolesToAssign.Split(';');

var userRoles = listRoles.Where(x => matchingRoles.Contains(x.RoleName))
                         .ToList();
于 2013-02-12T10:11:40.437 回答
0

您正在尝试在集合初始化程序中使用 foreach 循环,但您不能这样做。相反,您可以执行以下操作:

var userRoles = new List<Roles>();

foreach(var role in listRoles.Split(";"))
{
   userRoles.Add(listRoles.First(x => x.RoleName == role))
}
于 2013-02-12T10:12:17.827 回答