我有一个List<OrderItem> orderItems
包含数据库中我正在处理的一批订单的所有项目。我还有一个Dictionary<int, Order> order_list
包含项目需要进入的订单。Order 对象有一个List<OrderItem>
名为 OrderItems 的成员。
我在 order_list 中有一个 ID 为 1 的订单。我在 OrderItems 中有三个项目,它们带有 1 的 order_id 和三个不同的产品变体 id。
从数据库中获取按产品变体 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()
没有在我的应用程序中按顺序添加元素?