拆分一个字符串,并使用每个项目将其分配给另一个列表
本文关键字:项目 列表 另一个 分配 一个 字符串 拆分 | 更新日期: 2023-09-27 17:58:51
我有一个要分配给用户的角色列表:
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);
}
}
我有编译错误。
您有编译错误,因为字符串和原始角色列表都使用了相同的变量名listRoles
。
var rolesToAssign = "ROLE1;ROLE3";
var matchingRoles = rolesToAssign.Split(';');
var userRoles = listRoles.Where(x => matchingRoles.Contains(x.RoleName))
.ToList();
您正试图在集合初始值设定项中使用foreach循环,但不能这样做。相反,您可以执行以下操作:
var userRoles = new List<Roles>();
foreach(var role in listRoles.Split(";"))
{
userRoles.Add(listRoles.First(x => x.RoleName == role))
}