我有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次。
有没有更好的方法呢?
答案 0 :(得分:2)
只需使用一个循环,然后使用PositionID
确定数组的索引:
foreach(item in collection) {
arrayPosition[item.PositionID - 1] = item;
}
(您已将数组声明为int[]
,因此它无法保存集合中的记录,但这显示了使用索引访问数组中项目的原则。)