首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ中的多个.Where()语句是性能问题吗?

问LINQ中的多个.Where()语句是性能问题吗?
EN

Stack Overflow用户
提问于 2011-01-19 21:01:37
回答 1查看 5.2K关注 0票数 23

我想知道是否有多个.Where()语句的性能影响。例如,我可以这样写:

代码语言:javascript
复制
var contracts =  Context.Contract
    .Where(
        c1 =>
            c1.EmployeeId == employeeId
        )
    .Where(
        c1 =>
            !Context.Contract.Any(
                c2 =>
                    c2.EmployeeId == employeeId
                    && c1.StoreId == c2.StoreId
                    && SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
                )
        )
    .Where(
        c1 =>
            !Context.EmployeeTask.Any(
                t =>
                    t.ContractId == c1.Id
                )
        );

或者,我也可以将它们组合到一个Where()子句中,如下所示:

代码语言:javascript
复制
var contracts =  Context.Contract
    .Where(
        c1 =>
            c1.EmployeeId == employeeId
            && !Context.Contract.Any(
                c2 =>
                    c2.EmployeeId == employeeId
                    && c1.StoreId == c2.StoreId
                    && SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
                )
            && !Context.Employee_Task.Any(
                t =>
                    t.ContractId == c1.Id
                )
        );

Where()子句的链条是否会影响性能,或者它们是否等效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-19 21:05:34

在LINQ to Objects中,性能会有很小的影响,因为基本上迭代器链会更长--获取下一个元素意味着要向上执行一长串MoveNext()调用。

在LINQ to SQL和类似的提供程序中,我希望以任何一种方式生成相同的SQL,因此它不会影响那里的性能。

编辑:自从写了这篇文章后,我对LINQ to Objects的实现有了更多的了解--它是一个little more complicated……

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4735531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档