2011-05-24 16 views
2

我是新來的4.0框架(來自2.0),我不完全知道如何說這個問題,所以我認爲這將是最容易提出反對嘗試與谷歌的運氣。.Net 4.0 C# - 添加到沒有手動循環的集合

這裏的情景:

比方說,我有類的集合「輪」,我有類「車輛」,其中每個車輛對象具有的「車輪」一集的第二集合。我的目標是將每輛車的車輪添加到我的車輪集合中。

隨着擴展方法,有另一種方式來做到這一點:

foreach(Vehicle v in vehicles) 
{ 
    wheels.AddRange(v.Wheels); 
} 

或者更具體地說,在我的實際使用情況下,就只有一個車輪(我需要添加各種對象的特定成員在收集到的另一個集合):

foreach(Vehicle v in vehicles) 
{ 
    wheels.Add(v.Wheel); 
} 

我意識到做上述本身非常簡單,但對於這個項目,我想盡可能用增加至3.5/4.0。

謝謝!

回答

13

LINQ的一點點就可以了

wheels.AddRange(vehicles.SelectMany(v => v.Wheels)); 

感謝第四,我要指出的另一種情況。如果只有一個輪子,然後Select將工作:

wheels.AddRange(vehicles.Select(v => v.Wheel)); 
+3

或1輪的情況下, :車輛。選擇(v => v.Wheel) – Fourth 2011-05-24 15:53:09

4

還有一個辦法:

vehicles.ForEach(v => { wheels.AddRange(v.Wheels); }); 

或者在一個車輪的情況:

vehicles.ForEach(v => { wheels.Add(v.Wheel); });