当我使用IQueryable函数时,它会显着增加查询的时间

Bob*_*ob. 0 c# linq oracle performance entity-framework

我怎么做以下事情:

var query = from a in OBJ where a.ID == ID select c;
Run Code Online (Sandbox Code Playgroud)

它是<1秒,但是一旦我添加了IQueryable函数,它会增加到~3秒?

var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

当我使用FirstOrDefault()时也会发生同样的情况.

Jon*_*eet 10

这个:

var query = from a in OBJ where a.ID == ID select c;
Run Code Online (Sandbox Code Playgroud)

...只是代表查询.它根本不执行它.它应该是超炫快- "几乎没法比快",而不仅仅是"不到一秒钟."但

这个:

var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

...获取实际数据,这意味着它必须执行查询.

通常,LINQ 尽可能使用延迟执行.这只是一个例子.搜索LINQ延迟执行,你将获得大量文章的阅读.潜入适合您阅读风格的最佳:)