使用LINQ/Delegate,如何初始化属于类型列表中对象的所有成员的属性



这是一个场景:

//MyClass in a collection which makes MyObjects a list.
MyObjects = new ObservableCollection<MyClass>();

在这种情况下,如果MyClass有一个称为Arm的属性,例如,如何初始化MyObjects的所有成员的Arm属性,而不在Foreach循环中迭代它们,例如:

foreach (var MyObject in MyObjects)
{
    MyObject.Arm = "Manly"; 
}

我以为下面的代码是可能的,但没有

MyObjects.Select().Arm = "Manly";

LINQ特别没有"mutate all"方法,因为它试图实现某种功能。如果您绝对必须具有此功能,则可以定义自己的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会更可读。

相关内容

  • 没有找到相关文章

最新更新