我的if条件未实现预期逻辑?是否写法有误?求排查修正
问题分析与修复方案
- 你的if条件写法存在两处问题:
- 逻辑冗余:
else if (Model.Reference == null)完全等价于else,额外的判断属于多余写法 - 未覆盖完整需求场景:你提出的「对应的ID已存在于数据库中」的判断完全没实现,且只校验了
null,未处理Model.Reference为空字符串("")的情况——这会导致当Reference是空字符串时,代码不会进入生成ID的分支,不符合预期
- 逻辑冗余:
修复后代码示例(含数据库校验场景)
// 先判断Reference非空/非空字符串,同时校验数据库中对应ID是否存在 if (!string.IsNullOrEmpty(Model.Reference) && CheckReferenceIdExists(Model.Reference)) { // 符合条件,不生成ID } else { // Reference为空/空字符串,或对应ID不存在,调用生成ID方法 _sysautoController.GUID(1, Model.TranCompNo); }
注:CheckReferenceIdExists需要你自行实现,功能是查询数据库确认Model.Reference对应的ID是否存在。
简化版本(仅判断Reference是否为空/空字符串)
如果你的场景不需要数据库校验,只需要判断Reference是否为空值,代码可以简化为:
if (string.IsNullOrEmpty(Model.Reference)) { _sysautoController.GUID(1, Model.TranCompNo); } // Reference非空时无需额外操作,省略多余分支
内容的提问来源于stack exchange,提问作者YoRemm
相关产品推荐
相关产品推荐

