我的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查询:“使用SQL的LinqPad查询”“ >>

这是用于编写和优化Linq到EF和Linq到SQL查询的非常好的工具。这对于编写和测试.Net代码段也非常有用。

此工具为我节省了很多时间,仅仅是因为您不需要启动调试器!这是我多年来发现的最有用的.Net工具。

以上是关于我的linq查询只是拉动它需要的东西还是所有东西?的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Linq to Entity?

Linq2Sql - 存储复杂的Linq查询以便将来动态执行 - 原始文本 - 可能吗?

我错过了一些关于 LINQ 的东西吗?

LINQ to XML、ORM 或“完全不同”的东西?

LINQ 等于而不是包含

Linq to SQL(视图或表)?