我的linq查询只是拉动它需要的东西还是所有东西?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的linq查询只是拉动它需要的东西还是所有东西?相关的知识,希望对你有一定的参考价值。
我做这样的事情:
var src = dbContext.Set<Person>().Where(o => o.LastName.StartsWith(search));
var page = src.OrderBy(u => u.Id).Skip((page - 1) * pageSize).Take(pageSize);
var count = src.Count();
ef是否从数据库中提取所有内容,查询之后是否?我怎么知道的?有什么方法可以找到这个?
((首先使用ef4 ctp5代码)
答案
您正在使用的调用都不是To*
运算符(例如ToList
),因此所有方法调用都将转换为SQL并在数据库中执行。但是,Count
运算符会被立即求值,您可能应该将该分配延迟到实际需要该值的位置。一旦迭代,其他变量将被求值。
另一答案
尝试下载LinqPad,它将向您显示已执行的SQL,因此您可以准确了解正在发生的情况。
这是Linq查询,结果:
以下是与执行的SQL相同的Linq查询:“ >>
这是用于编写和优化Linq到EF和Linq到SQL查询的非常好的工具。这对于编写和测试.Net代码段也非常有用。
此工具为我节省了很多时间,仅仅是因为您不需要启动调试器!这是我多年来发现的最有用的.Net工具。
以上是关于我的linq查询只是拉动它需要的东西还是所有东西?的主要内容,如果未能解决你的问题,请参考以下文章