操作符& # 39;| | & # 39;不能应用于字符串和bool类型的操作数

本文关键字:类型 操作数 bool 不能 操作符 应用于 字符串 | 更新日期: 2023-09-27 18:08:34

我有一个问题,我运行下面的代码片段,它给了我错误:

操作符'||'不能应用于'string'和'bool'类型的操作数

    var qisg = new QuoteItemSectionGroup
    {
        SectionGroup = db.SectionGroups.Where(x => x.Name == "Ali Bottom Rail" && x.Section == TruckSection.FrontEndRequirments).First(),
        StockItem = quoteItem.BodyType.Name == "Royal Corrugated" ? db.StockItems.Where(x => x.StockCode == "AEX165").First() : null,
    };
    qisg.Quantity = qisg.StockItem == null ? 0 : 1;
    //Error in the line below
    qisg.Length = qisg.StockItem == null ? 0 : (double)quoteItem.ExternalWidth + quoteItem.BodyType.Name = "Royal Corrugated" || quoteItem.BodyType.Name == "Royal Smooth Glued" || quoteItem.BodyType.Name == "Smooth Folded" || quoteItem.BodyType.Name == "Royal Smooth Riveted" ? -0.136 : -0.020;
    quoteItem.SectionGroups.Add(qisg);

我如何能够做相同类型的事情与编码不同,而不是使用'||'操作符?

操作符& # 39;| | & # 39;不能应用于字符串和bool类型的操作数

变化

(double)quoteItem.ExternalWidth + quoteItem.BodyType.Name = "Royal Corrugated" || quoteItem.BodyType.Name == "Royal Smooth Glued" || quoteItem.BodyType.Name == "Smooth Folded" || quoteItem.BodyType.Name == "Royal Smooth Riveted" ? -0.136 : -0.020;

(double)quoteItem.ExternalWidth + ( quoteItem.BodyType.Name == "Royal Corrugated" || quoteItem.BodyType.Name == "Royal Smooth Glued" || quoteItem.BodyType.Name == "Smooth Folded" || quoteItem.BodyType.Name == "Royal Smooth Riveted" ? -0.136 : -0.020 );

更改:

  • 围绕三元的括号,以便更易于阅读。
  • quoteItem.BodyType。Name = "Royal瓦楞",这是错误的,应该是两个=这是==

来自下面的代码片段:

"Royal Corrugated" || quoteItem.BodyType.Name == "Royal Smooth Glued"

==操作符优先于||操作符。

因此quoteItem.BodyType.Name == "Royal Smooth Glued"被转换为布尔值。然后你基本上有<string> || <bool>,这是c#不允许的。