我需要使用LINQ或Zip在c#中優化2個嵌套for回圈,因為這段代碼需要花費一些時間來加載。
這兩個串列是用api呼叫加載的
List<OrderIncidentsDto> orderDtos = new List<OrderIncidentsDto> (); List<OrderItemDto> orderItemDtos = new List<OrderItemDto>()。我正在嘗試使用兩個嵌套的for回圈來迭代這個資料
for (int incidents = 0; incidents < orderDtos.Count; incidents ) { var oItems = new List<OrderItemDto>()。 for (int items = 0; items < orderItemDtos.Count; items ) { if (orderItemDtos[items].IncidentNumber == orderDtos[incidents].OrderIncidentName) { oItems.Add(orderItemDtos[items])。 orderDtos[incidents].OrderItems = oItems; } } }請向我建議減少代碼行數或擺脫多個回圈的最佳方法。
uj5u.com熱心網友回復:
你目前的代碼的時間復雜度為
。O(n^2),這可以減少到O(n),首先通過IncidentNumber對orderItemDtos進行索引,然后只是在orderDtos上回圈,挑選出它們的訂單專案var orderItemLookup = orderItemDtos.ToLookup(x => x.IncidentNumber)。 orderDtos.ForEach(order => order.OrderItems = orderItemLookup[order.OrderIncidentName]) 。轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309370.html
標籤:
