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?

是的。那是对的。

只要您不使用 ToListToArray 等重复查询。您不会受到任何性能影响。

您可能想阅读:LINQ and Deferred Execution