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

C#数据模型赋值时多条件三元表达式报错求助

解决C#三元运算符多条件判断的语法错误

嘿,我一眼就看到你在三元运算符的写法上踩坑啦,咱们来快速把它理顺~

问题根源

你现在的代码把&&放在了三元运算符的?后面,这完全不符合C#的语法规则。三元运算符的标准结构是:

条件表达式 ? 满足条件时的返回值 : 不满足条件时的返回值

如果需要多条件判断,所有条件都要合并到?前面的条件表达式里,不能拆成多个问号和运算符。

修正后的代码示例

首先建议你把FirstOrDefault()的结果提前存到变量里,既避免重复遍历集合,也让代码更清晰:

// 先提取集合项,避免重复调用FirstOrDefault
var targetAnswer = AnswerDtoObject.Answers.FirstOrDefault();

var answerDataModel = new AnswerDataModel() 
{ 
    Id = answerId, 
    // 把多条件合并到?前面的判断部分
    Value = targetAnswer == null && isSubQuestionExist ? "_SBQA" : targetAnswer?.YourPropertyName // 这里替换成你实际要取的属性
};

额外优化点

  1. 简化bool判断:isSubQuestionExist == true可以直接写成isSubQuestionExist,因为它本身就是布尔类型,这样写更符合C#的编码规范。
  2. 空安全访问:用targetAnswer?.YourPropertyName代替直接访问属性,防止targetAnswer为null时抛出空引用异常。
  3. 逻辑调整:如果你的业务逻辑是「answer为空 或者 子问题存在」就赋值_SBQA,记得把&&换成||,根据实际需求调整逻辑运算符。

内容的提问来源于stack exchange,提问作者K.Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:46:03