LINQ可选where子句对性能的影响
问题描述:
我相当有信心我有正确的想法,但我需要确定并且无法拿出我自己需要的确认。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子句进入时,会非常快速地变得非常混乱。
我正确地说,懒/延迟加载允许我做没有任何性能命中的第一个选项?
答
我正确地说,懒/延迟加载允许我做 第一个选项,没有任何性能命中?
是的。那是对的。
只要您不使用ToList
,ToArray
等迭代您的查询,您将不会采取任何性能命中。
您可能想要阅读:LINQ and Deferred Execution
太棒了。非常丰富的文章。感谢您的参考。 – ilyketurdles