【发布时间】:2015-05-05 13:47:23
【问题描述】:
如果我写一个查询,例如:
var query = (from a in this.Context.Addresses where a.Active select a.Name);
那这样说对吗
if(query.Any())
return query.ToList();
return null;
注意查询没有FirstOrDefault() 或ToList(),所以我想知道.Any() 是否运行查询?
【问题讨论】:
-
是的,确实如此。如果您在文档中没有找到 deferred 一词,则可以确定它会执行查询并立即返回结果。
-
感谢@TimSchmelter
-
如果查询返回结果,则可以安全地假设它已执行(否则您将如何收到结果)。
-
因此,如果我对原始查询执行 .ToList() 并且不执行 Any() 检查,它是否也有助于提高性能?因为看起来像这样我们运行了两次?一个与 Any 和一个与 ToList ?
-
@Bohn 是的,调用
Any然后调用ToList将运行两个不同的 SQL 查询。调用ToList然后Any只会执行一个SQL 查询。
标签: linq linq-to-entities