【发布时间】:2016-09-20 06:34:18
【问题描述】:
在下面的代码示例中,如何避免编写 3 个循环。我不确定如何保持代码可读性并仍然对其进行优化。这不是我正在处理的确切功能,但为简洁起见,我对其进行了更新,供大家阅读。
int OrderQuantity = 5;
List<LineItem> Items = GetLineItems();
List<int> UniqueOrderIDs = new List<int>();
foreach (LineItem i in Items) {
if (UniqueOrderIDs.Contains(i.OrderID) == false) {
PurchaseOrder Order = GetOrder(i.OrderId);
Order.ModifiedDate = Now;
UpdateOrder(Order);
UniqueOrderIDs.Add(i.OrderID);
}
}
foreach (int id in UniqueOrderIDs) {
decimal TaxableAmount = 0;
foreach (LineItem i in Items) {
If(i.OrderID == id){
i.OrderQuantity = OrderQuantity;
UpdateItem(i)
TaxableAmount += i.Cost;
}
}
UpdateTaxAmount(id, TaxableAmount);
}
【问题讨论】:
-
我认为你只需要一个按 LineItemId 的组,然后你就只有一个循环。
-
LineItemID 在这里已经是唯一的。 OrderID 不是唯一的。
-
我不明白为什么这个问题被否决了。
-
所以你有问题。 GetLineItems(OrderID),如果你传递 OrderID,为什么它返回不同的 OrderID?它应该只过滤您传递的 OrderID。
-
很抱歉你是对的。我获得多个订单的订单项。我在写问题时有一个错字。
标签: c# loops optimization