我有以下列表:改善目前的LINQ的時間複雜查詢
RakeSnapshots, ProductMovements
目的是既處理,並得到符合條件的元素的數量,具體如下:
考慮
RakeSnapshots
與StatusCode == "Dumping"
考慮
ProductMovement
Status == "InProgress"
- 抓取所有的元素都列出,滿足條件
RakeSnapshots.RakeCode
等於ProductMovements.ProductCode
以下是我目前的選擇的count
:
//代碼1:
var resultCount = ProductMovements.Where(x => RakeSnapshots
.Where(r => r.StatusCode == "Dumping")
.Any(y => y.RakeCode == x.ProductCode &&
x.Status == "InProgress"))
.Count();
//代碼2:
var productMovementsInprogress = ProductMovements.Where(x => x.Status == "InProgress");
var rakeSnapShotsDumping = RakeSnapshots.Where(r => r.StatusCode == "Dumping");
var resultCount = productMovementsInprogress.Zip(rakeSnapShotsDumping,(x,y) => (y.RakeCode == x.ProductCode) ? true : false)
.Where(x => x).Count();
挑戰既是代碼O(n^2)
複雜,有沒有改善它的方式,如果數據是非常大的
是什麼'RakeSnapshots - RakeCode等於ProductMovements - ProductCode'是什麼意思? –
我們可以將'RakeCode'與'ProductCode'進行比較,如問題中的示例所示。編輯,有複製和粘貼錯誤 –
第二個變體不等同於第一個。第一個返回預期的結果嗎? –