I am new to Linq.
I want to set two values in foreach statement like this
My actual code is this
foreach (Employee emp in employees)
{
foreach(Department dept in emp.Departments)
{
dept.SomeProperty = null;
}
collection.AddRange(emp.Departments);
}
Little refactoring turns the above into this
foreach (Employee emp in employees)
{
emp.Departments.ToList().ForEach(u => u.SomeProperty = null))
collection.AddRange(emp.Departments);
}
But I want something like this
employees.ToList().Foreach(collection.AddRange(emp.Departments),
emp.Departments.ToList().ForEach(u => u.SomeProperty = null))
You shouldn’t use
ForEachin that way. Read Lippert’s “foreach” vs “ForEach”If you want to be cruel with yourself (and the world), at least don’t create useless
ListNote that the result of the
Allexpression is aboolvalue that we are discarding (we are using it only because it “cycles” all the elements)I’ll repeat. You shouldn’t use
ForEachto change objects. LINQ should be used in a “functional” way (you can create new objects but you can’t change old objects nor you can create side-effects). And what you are writing is creating so many uselessListonly to gain two lines of code…