c# - 我可以在三元 If 语句中使用嵌套 OR 语句吗?
问题描述
我想知道是否可以将此代码语句转换为三元 if 语句。
var placeHolder = await Source.EntityOrDefaultAsync<_Item>(item => item.CompanyID == order.CompanyID && item.ItemID == od.ItemID);
if (placeHolder.TaxedAllCountryRegions = true || placeHolder.TaxedFed == 1 && placeHolder.TaxedState == 1)
{
decimal.TryParse(placeHolder.HandlingFee, out decimal trueFee);
od.HandlingFee = trueFee * od.Quantity;
}
我尝试像这样格式化它 - 但不认为它很有效。
var placeHolder = await Source.EntityOrDefaultAsync<_Item>(item => item.CompanyID == order.CompanyID && item.ItemID == od.ItemID);
return (placeHolder.TaxedAllCountryRegions = true || placeHolder.TaxedFed == 1 && placeHolder.TaxedState == 1) ?
decimal.TryParse(placeHolder.HandlingFee, out decimal trueFee)
: false;
od.HandlingFee = trueFee * od.Quantity;
解决方案
正如 canton7 已经评论的那样,您可能想要使用== true
而不是= true
. 可能后面的部分也||
必须嵌入括号中。
除此之外,您还想分配HandlingFee
, 因此单独的条件运算符无济于事。但是为什么不使用bool
变量呢?
bool computeHandlingFee = placeHolder.TaxedAllCountryRegions || (placeHolder.TaxedFed == 1 && placeHolder.TaxedState == 1);
if(computeHandlingFee && decimal.TryParse(placeHolder.HandlingFee, out decimal trueFee))
{
od.HandlingFee = trueFee * od.Quantity;
}
return computeHandlingFee;
也许您想将 包含decimal.TryParse
在computeHandlingFee
-logic 中。
推荐阅读
- angular - Angular 表单数据发布请求
- javascript - JS 和 jquery 在会话结束或窗口关闭之前设置一个新的 cookie
- linux - 无法在我的电脑和 SD 卡之间同步/备份目录:Rsync 输入/输出错误 (5)
- c++ - 对结构体向量进行排序时的时间差
- jquery - Flickity 不是函数
- image - 如何缩短此代码以制作灰度图片?
- node.js - 使用节点 js(express) 在 mongodb atlas 中发布时出现 UnknownReplWriteConcern 错误
- r - R:获得不均匀大小的增加向量之间的差异
- java - Java 1.1.8 游戏 JKobo 停止使用 Java 1.8.0_251 (NullPointerException)
- reactjs - 如何修复开玩笑错误“‘描述’回调不能返回值”