有沒有什麼辦法可以避免「查詢的結果不能枚舉多次」異常而不使用ToList()?EF 6:查詢的結果不能被枚舉超過一次
這裏是我的代碼的簡化版本:
var entities = _db.Trades.Where(t => t.A > 10);
int totalCount = entities.Count();
entities = entities.Where(t => t.B > 10);
int totalCountAfterAdditionalFilter = entities.Count();
我不能調用ToList()由於性能方面的考慮。我知道我可以再生成一個IQueryable,但這似乎是錯誤的(我有更多像這樣的過濾器)。我可以在第一次調用Count()後保存/複製IQueryable嗎?
謝謝!
「由於性能方面的考慮,我無法調用ToList()」是什麼性能考慮因素?該查詢需要在某個時間點實現 - 爲什麼不在「List」中? –
我有1M +記錄。在這個階段將所有內容加載到內存似乎是錯誤的。在應用最終過濾器之前,我只想獲得計數。一旦過濾完成,我將實現查詢,它將只返回10條左右的記錄。 – SoftwareFactor
您是否真的需要知道這兩個問題,或者您是否需要知道是否有物品被過濾掉?你可以過濾't.B <= 10',如果有任何項目,這兩個不一樣,你有你的答案。如果你真的需要完整的計數,那麼這是行不通的。 – Servy