首页 > 解决方案 > 我可以在三元 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;

标签: c#if-statementconditional-operator

解决方案


正如 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.TryParsecomputeHandlingFee-logic 中。


推荐阅读