2013-10-20 50 views
0

我有一個collection由具有位置ID的一組項目組成。 位置ID的範圍是500將集合分配到數組中

例如,這collection(從DB中檢索)包括3個記錄,如下

Name | PositionID 
-------------------- 
ItemA| 3 
ItemB| 9 
ItemC| 1 

我有的500

int[] arrayPosition = new int[500] 
長度的數組

我需要根據他們的PositionID將集合中的每個項目分配到數組中。

Array[0] >> ItemC | 1 
Array[1] >> null 
Array[2] >> ItemA | 3 
Array[3] >> null 
Array[4] >> null 
Array[5] >> null 
Array[6] >> null 
Array[7] >> null 
Array[8] >> ItemB | 9 
Array[9] >> null 
.... 

我的解決辦法是使用一個for循環讀取該陣列,並在整個collection使用foreach循環,並相應地爲它們分配。

for(x=0; x <= Array.Length; x++) 
{ 
    foreach(item in collection) 
    .... 
} 

但是,如果讓我們說收集由500個項目組成,意味着系統必須循環500 * 500 = 250000次。

有沒有更好的方法來做到這一點?

回答

2

只需使用一個單迴路,並使用PositionID確定指標到數組:

foreach(item in collection) { 
    arrayPosition[item.PositionID - 1] = item; 
} 

(您已經聲明數組作爲int[],所以它不能從您的收藏持有的記錄,但這顯示了使用索引訪問數組中項目的原理。)

+0

Ok注意。謝謝! – My2ndLovE