2016-04-25 25 views
0

我相当有信心我有正确的想法,但我需要确定并且无法拿出我自己需要的确认。LINQ可选where子句对性能的影响

我正在查询数据库使用实体框架与SQL作为我在C#后端。这里“测试”是我的桌子的名字。

var query1 = from t in testing 
      select t; 

现在我需要添加一个where子句,但是这个where子句是可选的,并且由用户控制。所以我添加了一些内容:

bool trivialOption = true; 
if(trivialOption) 
{ 
    query1 = query1.Where(t => t.TrivialProperty == true); 
} 

这只是一个“where”子句,将被应用。会有更多。

据我了解,只要我不上名单列举,还有在做这种方式没有性能损失,而不是做这样一个完全不同的查询:

if(trivialOption) 
{ 
    var query1 = from t in testing 
       where (t => t.TrivialProperty) 
       select t; 
} 
else 
{ 
    var query1 = from t in testing 
       select t; 
} 

这,当其他可选的where子句进入时,会非常快速地变得非常混乱。

我正确地说,懒/延迟加载允许我做没有任何性能命中的第一个选项?

回答

4

我正确地说,懒/延迟加载允许我做 第一个选项,没有任何性能命中?

是的。那是对的。

只要您不使用ToListToArray等迭代您的查询,您将不会采取任何性能命中。

您可能想要阅读:LINQ and Deferred Execution

+1

太棒了。非常丰富的文章。感谢您的参考。 – ilyketurdles