Reputation: 9342
I have a list of roles to assign to users:
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
};
I can assign a specific role like this:
var userRoles = new List<Role>
{
listRoles.First(x => x.RoleName == "ROLE1")
}
Let's say I have a string with listed roles to add to my user
string listRoles = "ROLE1;ROLE3";
My question: how can I assign a list of roles to my user?
I try:
var userRoles = new List<Role>
{
foreach(var role in listRoles.Split(";")
{
listRoles.First(x => x.RoleName == role);
}
}
I got compile error.
Upvotes: 0
Views: 97
Reputation: 223292
You are trying to use foreach loop inside the collection initializer, you can't do that. Instead you can do the following:
var userRoles = new List<Roles>();
foreach(var role in listRoles.Split(";"))
{
userRoles.Add(listRoles.First(x => x.RoleName == role))
}
Upvotes: 0
Reputation: 12241
You have compilation error because you use the same variable name listRoles
for both string and list of origina roles.
var rolesToAssign = "ROLE1;ROLE3";
var matchingRoles = rolesToAssign.Split(';');
var userRoles = listRoles.Where(x => matchingRoles.Contains(x.RoleName))
.ToList();
Upvotes: 1