LINQ 可选 where 子句对性能的影响
LINQ optional where clause effect on performance
我相当有信心我的想法是正确的,但我需要确定并且无法自己得出我需要的确认。
我正在使用 Entity Framework 和 SQL 作为我在 C# 中的后端查询数据库。这里 "testing" 是我的 table.
的名字
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 子句时,这会很快变得非常混乱。
我说的 lazy/deferred 加载允许我在没有任何性能影响的情况下执行第一个选项是否正确?
Am I correct in saying that lazy/deferred loading allows me to do the
first option without any performance hits?
是的。那是对的。
只要您不使用 ToList
、ToArray
等重复查询。您不会受到任何性能影响。
您可能想阅读:LINQ and Deferred Execution
我相当有信心我的想法是正确的,但我需要确定并且无法自己得出我需要的确认。
我正在使用 Entity Framework 和 SQL 作为我在 C# 中的后端查询数据库。这里 "testing" 是我的 table.
的名字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 子句时,这会很快变得非常混乱。
我说的 lazy/deferred 加载允许我在没有任何性能影响的情况下执行第一个选项是否正确?
Am I correct in saying that lazy/deferred loading allows me to do the first option without any performance hits?
是的。那是对的。
只要您不使用 ToList
、ToArray
等重复查询。您不会受到任何性能影响。
您可能想阅读:LINQ and Deferred Execution