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ループを使用して配列を読み取り、使用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 に答える