私がList<OrderItem> orderItems
取り組んでいる注文のバッチのデータベースからのすべてのアイテムを含む があります。またDictionary<int, Order> order_list
、アイテムを入れる必要がある注文を含む もあります。Order オブジェクトには、List<OrderItem>
OrderItems という名前のメンバーがあります。
order_list に ID が 1 の注文があります。OrderItems には、order_id が 1 で、3 つの異なる製品バリアント ID を持つ 3 つのアイテムがあります。
データベースからのフェッチでは、製品バリエーション ID の順序でアイテムが取得されます。つまり、orderItems は次のようになります。
[0] => orderId = 1、productVariantId = 4
[1] => orderId = 1、productVariantId = 5
[2] => orderId = 1、productVariantId = 6
私のコードでは、orderItems を通過し、それぞれの注文に割り当てるループがあります。
foreach (OrderItem orderItem in orderItems)
{
if (order_list.ContainsKey(orderItem.OrderId))
{
order_list[orderItem.OrderId].OrderItems.Add(orderItem);
}
}
ループの実行後、注文 1 の OrderItems メンバーは次のようになります。
[0] => orderId = 1、productVariantId = 5
[1] => orderId = 1、productVariantId = 6
[2] => orderId = 1、productVariantId = 4
コードを注意深く調べ、要素が挿入されるのを確認しました。これが私が見たものです:
製品バリアント 4 の反復 1、最終的な OrderItems は次のようになります。
[0] => orderId = 1、productVariantId = 4
製品バリアント 5 の反復 2、最終的な OrderItems は次のようになります。
[0] => orderId = 1、productVariantId = 5
[1] => orderId = 1、productVariantId = 4
製品バリアント 6 の反復 3、最終的な OrderItems は次のようになります。
[0] => orderId = 1、productVariantId = 5
[1] => orderId = 1、productVariantId = 6
[2] => orderId = 1、productVariantId = 4
私の調査により、List<T>.Add()
メソッドは常に新しい要素をリストの END に追加する必要があるため、これはそのように動作するべきではないと結論付けました。List<T>.Add()
アプリケーションに要素を順番に追加しない理由を誰か教えてもらえますか?