2013-10-30 69 views
0

有沒有一種簡單的方法,也是最重要的,更優化做打鳥代碼:複製每個列表項另一個列表項attribut

class Chair{ 
    int numberOfLegs=4; 
} 

class House{ 
    Chair chair; 
    String name="My Home"; 
} 

// add chairs to each house 
IList<Chair> chairs = new List<Chair>(10); // let us imagine that we have 10 different chairs... 

// Code to replace: 
IList<House> houses = new List<House>(chairs.Count()); 
for (int i = 0; i < houses.Count(); i++){ 
    houses[i].chair = chairs[i] 
} 
+1

「代碼替換」不會成功,因爲列表最初是空的。 – usr

+0

該代碼僅供您瞭解該問題。想象一下,我們有10把椅子的清單:P – jbatista

回答

5

我自己的建議被替換forLinq

// Code to replace: 
IList<Homes> homes = chairs.Select(c => new Home{ Chair = c}).ToList(); 

它比舊代碼更快嗎?

你有更好的主意嗎?也許使用chairs.AsParallel

+0

+1 - 直指點,更清潔。這當然不會在主OP中的2個結構之間相互關聯(即,這可以獨立工作,但不是如果2個結構單獨定義並需要以某種方式進行交互) –

+0

對不起,但我不'不明白。你能更清楚@jimtollan?你在談論兩極關係嗎? – jbatista

+1

嘿嘿 - 我指的是這樣的事實,當然這個例子是你創建的,但不會擴展到你有一張椅子和一張單獨的房子列表的情況。 –

相關問題