2014-04-16 59 views
1

這是情景:使用LINQ /委託,如何初始化屬性屬於一個類型列表的對象的所有成員?

//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"; 

回答

2

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是更具可讀性,如果你變異的東西。

+0

完全沒有。沒有必要。只是想盡可能地學習這樣的東西。欣賞它:) – Mehrad

相關問題