0

我有一collection组带有位置 ID 的项目。仓位 ID 的范围是 500。

例如,这collection(从数据库中检索)由 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 次。

有没有更好的方法来做到这一点?

4

1 回答 1

2

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

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

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

于 2013-10-20T11:45:05.613 回答