我有一个要分配给用户的角色列表:
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);
}
}
我收到编译错误。
答案 0 :(得分:1)
您有编译错误,因为您对字符串和原始列表列表使用相同的变量名listRoles
。
var rolesToAssign = "ROLE1;ROLE3";
var matchingRoles = rolesToAssign.Split(';');
var userRoles = listRoles.Where(x => matchingRoles.Contains(x.RoleName))
.ToList();
答案 1 :(得分:0)
你试图在collection initializer内使用foreach循环,你不能这样做。相反,您可以执行以下操作:
var userRoles = new List<Roles>();
foreach(var role in listRoles.Split(";"))
{
userRoles.Add(listRoles.First(x => x.RoleName == role))
}