使用Lambda表达式堆叠条件

时间:2018-11-16 11:08:00

标签: c# linq lambda

我们通常在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,而IQueryable具有Where

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我认为使用'&&'和'||'运算符而不是多个子句实质上导致对整个集合进行一次枚举。多个“哪里”子句意味着您将枚举完整集合,然后枚举结果,可能又是完整集合。

答案 2 :(得分:0)

我建议使用运算符“ &&” ..因为它过滤记录的时间甚至使用多个条件。 但是,如果使用多个where语句,则肯定会影响性能,因为使用where语句的次数会影响结果查询以进行过滤。