我这样做:
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();
是从数据库中提取所有内容以及之后是否进行查询?我怎么知道这个?有什么方法可以找到这个?
(首先使用ef4 ctp5代码)
答案 0 :(得分:3)
尝试下载LinqPad,它会显示执行的SQL,以便您可以准确地看到发生了什么。
这是一个Linq查询和结果:
这是相同的Linq查询以及执行的SQL:
这是一个非常好的工具,用于编写和优化Linq到EF和Linq到SQL查询。它也非常适合编写和测试.Net代码片段。
这个工具为我节省了很多时间,因为你不需要启动调试器!这是我多年来发现的最有用的.Net工具。
答案 1 :(得分:1)
您使用的调用都不是To*
运算符(如ToList
),因此所有方法调用都将转换为SQL并在数据库中执行。但是,会立即评估Count
运算符,您可能应该将该赋值延迟到实际需要该值的位置。迭代后将评估其他变量。