我想知道是否有可能把代码的这个语句变成一个三元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
。也可能后面的部分必须嵌入到括号中。
除此之外,您还需要分配handlingfeed
,因此仅使用条件运算符是没有帮助的。但是为什么不使用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;
您可能希望在ComputeHandlingFeed
-逻辑中包含Decimal.tryparse
。