我们通常在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
。
答案 0 :(得分:1)
您的语句到达数据库的时间是调用.ToList()
的时间。因此,您在此之前所做的操作不会在实践中产生太大差异。
但是,从纯数学性能的角度来看,它们背后的翻译过程应该存在一些差异。可以通过@sujith karivelil建议的实验或通过深入的阅读来理解。
答案 1 :(得分:0)
我认为使用'&&'和'||'运算符而不是多个子句实质上导致对整个集合进行一次枚举。多个“哪里”子句意味着您将枚举完整集合,然后枚举结果,可能又是完整集合。
答案 2 :(得分:0)
我建议使用运算符“ &&” ..因为它过滤记录的时间甚至使用多个条件。 但是,如果使用多个where语句,则肯定会影响性能,因为使用where语句的次数会影响结果查询以进行过滤。