我IQueryable
在我的应用程序中使用接口,并推迟在DB上执行SQL,直到像这样的方法.ToList()
我有时需要找到某些列表的计数 - 而不需要使用列表中的数据进行计数.根据我的SQL经验,我知道SQL COUNT()的工作量远远少于返回所有行的等效SELECT语句.
所以我的问题是:不会是在DB工作少,从返回计数IQueryable
的Count()
不是呈现方法IQueryable
到列表并调用列表的Count()
方法是什么?
我怀疑它将会ToList()
激活SELECT sql,然后在单独的查询中计算行数.我希望Count()
在IQueryable
简单地为sql COUNT()查询呈现sql.但我不确定.你知道吗?
调用ToList()
将返回List
所有数据的正版,这意味着获取所有数据.不好.
调用Count()
确实应该使SQL在数据库端进行计数.好多了.
但是,检查此问题的最简单方法是在数据上下文中启用日志记录(或者为您的特定提供程序提供等效内容)并查看实际发送的查询.