在三元运算符中使用 OR
Using OR inside ternary operator
我想做以下条件,但它是错误的。怎样做才能使其正确?
row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c";
我们可以吗||内部三元条件?
string theRow = row["Total Serviceable Offers"].ToString();
(theRow == "a" || theRow == "b") ? "0" : "c";
我只是 运行 int f = (g > 0 || h > 0) ? j : k;
在测试程序中,它没有错误,所以几乎可以。
注意逻辑,祝你好运。
您正在寻找这种语法
(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";
Can we have ||
inside ternary condition?
是的,你可以。但是在您执行此操作的方式中,||
我们介于
row["Total Serviceable Offers"].ToString() == "a"
布尔表达式和 "b"
字符串表达式之间。这就是您的代码无法编译的原因。
您可以将其更改为 Contains
或 Any
表达式,或者如果比较次数多于您的代码片段显示的次数,则创建辅助方法。
这里有几种重写表达式的方法:
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";
}
我想做以下条件,但它是错误的。怎样做才能使其正确?
row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c";
我们可以吗||内部三元条件?
string theRow = row["Total Serviceable Offers"].ToString();
(theRow == "a" || theRow == "b") ? "0" : "c";
我只是 运行 int f = (g > 0 || h > 0) ? j : k;
在测试程序中,它没有错误,所以几乎可以。
注意逻辑,祝你好运。
您正在寻找这种语法
(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";
Can we have
||
inside ternary condition?
是的,你可以。但是在您执行此操作的方式中,||
我们介于
row["Total Serviceable Offers"].ToString() == "a"
布尔表达式和 "b"
字符串表达式之间。这就是您的代码无法编译的原因。
您可以将其更改为 Contains
或 Any
表达式,或者如果比较次数多于您的代码片段显示的次数,则创建辅助方法。
这里有几种重写表达式的方法:
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";
}