C#数据模型赋值时多条件三元表达式报错求助
解决C#三元运算符多条件判断的语法错误
嘿,我一眼就看到你在三元运算符的写法上踩坑啦,咱们来快速把它理顺~
问题根源
你现在的代码把&&放在了三元运算符的?后面,这完全不符合C#的语法规则。三元运算符的标准结构是:
条件表达式 ? 满足条件时的返回值 : 不满足条件时的返回值
如果需要多条件判断,所有条件都要合并到?前面的条件表达式里,不能拆成多个问号和运算符。
修正后的代码示例
首先建议你把FirstOrDefault()的结果提前存到变量里,既避免重复遍历集合,也让代码更清晰:
// 先提取集合项,避免重复调用FirstOrDefault var targetAnswer = AnswerDtoObject.Answers.FirstOrDefault(); var answerDataModel = new AnswerDataModel() { Id = answerId, // 把多条件合并到?前面的判断部分 Value = targetAnswer == null && isSubQuestionExist ? "_SBQA" : targetAnswer?.YourPropertyName // 这里替换成你实际要取的属性 };
额外优化点
- 简化bool判断:
isSubQuestionExist == true可以直接写成isSubQuestionExist,因为它本身就是布尔类型,这样写更符合C#的编码规范。 - 空安全访问:用
targetAnswer?.YourPropertyName代替直接访问属性,防止targetAnswer为null时抛出空引用异常。 - 逻辑调整:如果你的业务逻辑是「answer为空 或者 子问题存在」就赋值
_SBQA,记得把&&换成||,根据实际需求调整逻辑运算符。
内容的提问来源于stack exchange,提问作者K.Z
相关产品推荐
相关产品推荐

