【问题标题】:LINQ optional where clause effect on performanceLINQ 可选 where 子句对性能的影响
【发布时间】:2016-04-25 18:06:48
【问题描述】:

我相当有信心我的想法是正确的,但我需要确定并且无法自己提出我需要的确认。

我正在使用 Entity Framework 和 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 子句时,这会很快变得非常混乱。

我是否正确地说延迟/延迟加载允许我在没有任何性能影响的情况下执行第一个选项?

【问题讨论】:

    标签: c# linq where


    【解决方案1】:

    我是否正确地说延迟/延迟加载允许我执行 没有任何性能影响的第一个选项?

    是的。那是对的。

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

    您可能想阅读:LINQ and Deferred Execution

    【讨论】:

    • 太棒了。非常翔实的文章。感谢您的参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多