如何在LINQ Lambda表达式中编写‘AND NOT’逻辑?(SQL转Lambda场景)
将SQL转换为LINQ Lambda表达式
直接对应你给出的SQL的LINQ Lambda表达式如下:
var result = dbContext.Students .Where(s => s.MathGrades > 5 && s.FizGrades > 5 && !(s.MathGrades == 2 && s.FizGrades == 2));
关于AND NOT逻辑的实现
在LINQ Lambda中,AND NOT对应的就是**&& !()**的组合:
&&对应SQL里的AND,用于连接多个并列条件!()对应SQL里的NOT (...),括号内包裹需要取反的子条件,!表示逻辑非
另外,根据德摩根定律,NOT (A AND B)可以等价转换为NOT A OR NOT B,对应的Lambda表达式如下,效果和原SQL完全一致:
var result = dbContext.Students .Where(s => s.MathGrades > 5 && s.FizGrades > 5 && (s.MathGrades != 2 || s.FizGrades != 2));
两种写法都能满足需求,可根据自己的阅读习惯选择。
内容的提问来源于stack exchange,提问作者Coko
相关产品推荐
相关产品推荐

