我有一個繁瑣的物件串列。計數約為 25.837。一旦我想用這樣的 linq 運算式過濾我的物件
underManagementPersonList.OrderByDescending(x => x.BarCode).Where(x => x.CardNum.Contains("0480286000") || x.BarCode.Contains("0480286000") || x.PersonName.Contains("0480286000")).Skip(pageIndex).ToList(); Evaluation timed out System.Collections.Generic.List<GTS.Clock.Model.MonthlyReport.UnderManagementPerson>
我收到這個錯誤
評估超時
ALthogh 沒有這樣的問題,像下面這樣的物品較少,我得到 100 件物品
underManagementPersonList.Take(100).OrderByDescending(x => x.BarCode).Where(x => x.CardNum.Contains("0480286000") || x.BarCode.Contains("0480286000") || x.PersonName.Contains("0480286000")).Skip(pageIndex).ToList();

uj5u.com熱心網友回復:
因為這只是一個物件串列,所以順序很重要 - 你可以通過將你的放在你的.Where()前面來加快速度.OrderByDescending()
underManagementPersonList
.Where(x => x.CardNum.Contains("0480286000")
|| x.BarCode.Contains("0480286000")
|| x.PersonName.Contains("0480286000"))
.OrderByDescending(x => x.BarCode)
.Skip(pageIndex)
.ToList();
這仍然具有潛在的昂貴/緩慢的字串。包含對 25,837 個物件呼叫多達 3 次,但至少您只會對與您的 Where 匹配的物件子集進行排序。
注意:將 Where 放在 the 之前OrderByDescending會以相同的順序生成相同的一組物件 - 不同之處在于,只要至少有一個物件被你的 where 過濾掉,那么它就會更快 - 匹配的集合越小您訂購的速度越快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371741.html
