Is it possible to set property on each element from List using LINQ.
for example:
var users = from u in context.Users where u.Name == "George" select u; foreach (User us in users){ us.MyProp = false; }
Is it possible to make it cleaner ?
Or you can convert it to ToList() and use ForEach method.
users.ToList().ForEach(u => u.MyProp = false);
to update more than one properties
users.ToList().ForEach(u => { u.property1 = value1; u.property2 = value2; });
Or like this
(from u in context.Users where u.Name == "George" select u).ToList() .ForEach(u => u.MyProp = false);
You can create your own ForEach extension method:
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action) { foreach (var element in source) { action(element); } return source; }
Then your code can be simplified to:
context.Users.Where(x => x.Name == "George").ForEach(u => u.MyProp = false);
EDIT: You could also yield return each item after the call to action() (no pun intended) to leave the deferred execution untouched.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With