将集合分配到数组中

时间:2013-10-20 11:39:20

标签: asp.net arrays collections

我有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循环来读取数组并使用foreach循环遍历整个collection并相应地分配它们。

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

但如果假设该集合包含500个项目,则意味着系统必须循环500 * 500 = 250000次。

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

只需使用一个循环,然后使用PositionID确定数组的索引:

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

(您已将数组声明为int[],因此它无法保存集合中的记录,但这显示了使用索引访问数组中项目的原则。)