LINQ可选where子句对性能的影响

时间:2016-04-25 18:06:48

标签: c# linq where

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

我正在使用带有SQL的Entity Framework作为我在C#中的后端查询数据库。这里“测试”是我的表的名称。

let url = "https://graph.facebook.com/v2.6/<USER_ID>?fields=first_name,last_name,profile_pic&access_token=<PAGE_ACCESS_TOKEN>";
facebook.api(url, function(err, data){
    if(err){
        console.error(err);
        res.sendStatus(502);
        res.end();
    }
    else{
        //Do some stuff with the data object
    }
});

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

var query1 = from t in testing
             select t;

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

根据我的理解,只要我不在列表中进行枚举,就不会以这种方式执行,而不是执行完全不同的查询:

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

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

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

1 个答案:

答案 0 :(得分:4)

  

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

是。那是正确的。

只要您不使用ToListToArray等来迭代您的查询,您就不会进行任何性能点击。

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