有没有什么办法可以避免“查询的结果不能枚举多次”异常而不使用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