c# - 使用 Lambda 表达式堆叠 where 条件

标签 c# linq lambda

我们一般在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,而 IQueryable 又具有 Where

最佳答案

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

但是从纯数学性能的角度来看,应该与背后的翻译过程有关。这可以通过@sujith karivelil 建议的实验或深入阅读来理解。

关于c# - 使用 Lambda 表达式堆叠 where 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336646/

相关文章:

c# - 何时在 DbContext 构造函数中提供 DbContextOptions 与 OnConfiguring?

c# - OutOfMemoryException加载xml文档winmo 6.1

c# - 方法在每个请求中被调用 2 或 3 次 .NET MVC

C# Linq 查询作为函数参数

c# - Foreach 更改未保留在 Linq 项目集合中

c# - 为什么我可以声明一个与父作用域中的变量同名的子变量?

c# - VS2012 自动化部署 - 未为项目设置 OutputPath 属性

c# - IEquatable<T>.Equals 中的条件

javascript - 此 TypeScript Lambda 表达式中的括号是什么意思?

java - 从没有空指针异常的 Map 的 Map 的 Map 中获取值