提问者:小点点

我可以在我的三元If语句中有一个嵌套的或语句吗?


我想知道是否有可能把代码的这个语句变成一个三元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;

共1个答案

匿名用户

正如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