这是情景:
//MyClass in a collection which makes MyObjects a list.
MyObjects = new ObservableCollection<MyClass>();
在这种情况下,如果MyClass
有一个名为Arm
的属性,那么,如何在不迭代它们的情况下初始化Arm
所有成员的MyObjects
属性在Foreach
循环中,如:
foreach (var MyObject in MyObjects)
{
MyObject.Arm = "Manly";
}
我认为下面的代码是可能的,但没有
MyObjects.Select().Arm = "Manly";
答案 0 :(得分:2)
LINQ特别没有&#34; mutate all&#34;方法,因为它试图成为一种功能。如果您绝对必须拥有此权限,则可以定义自己的ForEach
扩展方法,该方法需要Action
并在所有项目上运行。
public static void ForEachAbomination<T>(this IEnumerable<T> source, Action<T> action) {
foreach (T item in source)
action(item);
}
这允许你做
someObjects.ForEachAbomination(i => { i.Arm = "Manly"; });
但说实话,我认为foreach
如果你发生变异,会更具可读性。