C# 我的三元If语句中可以有嵌套的OR语句吗?

C# 我的三元If语句中可以有嵌套的OR语句吗?,c#,if-statement,conditional-operator,C#,If Statement,Conditional Operator,我想知道是否有可能将这个代码语句转换成三元if语句 var placeHolder = await Source.EntityOrDefaultAsync<_Item>(item => item.CompanyID == order.CompanyID && item.ItemID == od.ItemID); if (placeHolder.TaxedAllCountryRegions = true || placeHolde

我想知道是否有可能将这个代码语句转换成三元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=wait Source.EntityOrDefaultAsync(item=>item.CompanyID==order.CompanyID&&item.ItemID==od.ItemID);
if(placeHolder.TaxedAllCountryRegions=true | | placeHolder.TaxedFed==1&&placeHolder.TaxedState==1)
{
decimal.TryParse(占位符.HandlingFee,out decimal-trueFee);
od处理费=特鲁费*od数量;
}
我试着把它格式化成这样,但我觉得它不太管用

 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;
var placeHolder=wait Source.EntityOrDefaultAsync(item=>item.CompanyID==order.CompanyID&&item.ItemID==od.ItemID);
返回(placeHolder.TaxedAllCountryRegions=true | | placeHolder.TaxedFed==1&&placeHolder.TaxedState==1)?
decimal.TryParse(占位符.HandlingFee,out decimal-trueFee)
:假;
od处理费=特鲁费*od数量;

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

也许你想在
计算处理费
-逻辑中包含
十进制.TryParse

大概你的意思是
==true
?你有或没有参数-它可能在做你想做的事情以外的事情。if(x | | y&&z)与if((x | | y)&z)不同,canton说:这应该是一个双等于
占位符。TaxedAllCountryRegions==true
@Nikki9696你不能保证这一点。因此可以进行测试。想想
while(x=reader.Read()!=null)
在赋值之前,您得到了一个
返回值
,所以它甚至不会被编译。我认为你原来的逻辑不应该改变。当您有一个
if\else
且两者都为同一事物赋值时,您只需要条件运算符(或您称之为三元运算符)。此代码与原始代码略有不同。当
TryParse
失败时,他们可能确实需要乘法和赋值。@juharr:原始代码包含多个bug,所以我不确定在这种情况下是否正确。我(现在)还提到,如果需要的话,他可能希望在bool逻辑中包含TryParse检查。