You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LINQ Where子句中使用三元运算符实现条件筛选

问题分析与解答

你的三元运算符写法不正确

你当前的LINQ语句中,三元运算符的else分支写了false,这会导致所有非Maths的记录都被过滤掉,完全不符合需求(需求是其余Subject无额外条件,应该保留)。

正确的写法

方式1:用三元运算符实现

把三元逻辑调整为:当Subject是Maths时,判断Score≥50;否则直接保留该记录(返回true):

(from tbl in dbContext.Table1 
 where tbl.Subject == "Maths" ? tbl.Score >= 50 : true
 select tbl)

方式2:更直观的逻辑表达式(推荐)

其实不需要强行用三元,直接用逻辑或的写法更清晰,还能避免运算符优先级的混淆(可加括号明确逻辑):

var r = dbContext.Table1
                 .Where(x => (x.Subject == "Maths" && x.Score >= 50) || 
                             x.Subject != "Maths");

或者等价的更简洁写法:

var r = dbContext.Table1
                 .Where(x => x.Subject != "Maths" || x.Score >= 50);

这个逻辑是:只要不是Maths科目,或者是Maths且Score≥50,就保留记录,完全匹配需求。

验证结果

以上写法都会得到你期望的输出:

1   Pinky   English   60
3   Mahesh  Maths     50
4   Rani    Maths     50
5   Rani     Eco       50

内容的提问来源于stack exchange,提问作者Pinky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:42:41