在三元运算符中使用OR

时间:2016-11-16 14:12:22

标签: c# if-statement ternary-operator

我想提出以下条件,但错误。如何才能使其正确?

row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c";

我们可以有||在三元条件下?

4 个答案:

答案 0 :(得分:4)

string theRow = row["Total Serviceable Offers"].ToString();
(theRow == "a" || theRow == "b") ? "0" : "c";

答案 1 :(得分:3)

  

我们可以在三元条件下||吗?

是的,你可以。但是你的方式是||我们之间的row["Total Serviceable Offers"].ToString() == "a",布尔表达式和"b"之间的字符串表达式。这就是你的代码无法编译的原因。

您可以将其更改为ContainsAny表达式,或者如果有比您的代码段显示的内容更多的比较,请制作辅助方法。

以下是几种重写表达式的方法:

new[]{"a", "b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c";
new[]{"a", "b"}.Any(s => s == row["Total Serviceable Offers"].ToString()) ? "0" : "c";
IsAorB(row["Total Serviceable Offers"].ToString()) ? "0" : "c";

...

bool IsAorB(string s) {
    return s == "a" || s == "b";
}

答案 2 :(得分:1)

我刚刚在测试程序中运行了int f = (g > 0 || h > 0) ? j : k;而且没有错误,所以非常可以。

请小心逻辑,祝你好运。

答案 3 :(得分:1)

您正在寻找此语法

(row["Total Serviceable Offers"].ToString() == "a" || row["Total Serviceable Offers"].ToString() == "b") ? "0" : "c";

但我更喜欢Contains()

的简短方法
new[]{"a","b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c";