首页 > 解决方案 > 使用 Lambda 表达式堆叠 where 条件

问题描述

我们通常在表达式中添加多个条件,用( )Where分隔。&&||

假设,如果我堆叠多个 where 条件,性能会有什么不同吗?

例如:

这条线是

dbContext.Students.Where(s=> s.Section = 5 && s.Marks >50).ToList();

如同

dbContext.Students.Where(s=>s.Section = 5).Where(s=>s.Marks > 50).ToList();

注意:上面的行是可能的,因为Where返回 IQueryable 又具有Where.

标签: c#linqlambda

解决方案


您的语句到达数据库的时间是.ToList()被调用的时间。因此,您在此之前所做的不会在实践中产生太大差异。

但是,从纯数学性能的角度来看,这些背后的翻译过程应该存在一些差异。正如@sujith karivelil 所建议的那样,可以通过实验或深入阅读来理解这一点。


推荐阅读