我想将以下条件转换为三元
if (!string.IsNullOrEmpty(objModel.Status))
{
if (objModel.Status == "0")
{
Model.Sort = "Result1";
}
else if (objModel.Status == "8")
{
Model.Sort = "Result2";
}
else
{
Model.Sort = "Result3";
}
}
我尝试了以下方法,但是如果不是,就决定了
Model.Sort = !string.IsNullOrEmpty(Model.Status)
? (Model.Status == "0" ? Retult1 : string.Empty)
: string.Empty;
答案 0 :(得分:0)
您可以像这样使用三元运算符
a ? b : c ? d : e
得到这个:
if (a) {
b
}
else if (c) {
{
d
}
else {
e
}
以您的情况
objModel.Status == "0" ? Model.Sort = "Result1" : objModel.Status == "8" ? Model.Sort = "Result2" : Model.Sort = "Result2";
我希望这会有所帮助。
答案 1 :(得分:0)
您可以使用三元运算符来编写代码,如下所示:
Model.Sort = string.IsNullOrEmpty(objModel.Status) // if (string.IsNullOrEmpty(Status))
? Model.Sort // Model.Sort = Model.Sort;
: objModel.Status == "0" // else if (Status == "0")
? "Result1" // Model.Sort = "Result1";
: objModel.Status == "8" // else if (Status == "8")
? "Result2" // Model.Sort = "Result2";
: "Result3"; // else Model.Sort = "Result3";
第一个条件代表if
条件,然后:
运算符之后的每个语句(作为比较)代表else if
,最后一个结果位于最后一个{{1 }}代表最终的:
分配。
第一个条件是一种“虚拟”条件(因为如果它是真的,什么都不会真正改变*),但是如果我们想在三元运算中包括else
检查,这是必需的,因为三元运算符具有在IsNullOrEmpty
和true
中都返回一个值。
我不确定是否可以优化虚拟分配,或者在这种“虚拟”情况下调用setter。如果调用了setter,则根据setter代码的作用,这可能会与原始代码产生不同的影响。
答案 2 :(得分:0)
保留局部变量以简化操作
var x = objModel.Status;
if (string.IsNullOrEmpty(x))
{
Model.Sort = x=="0" ? "Result1" :
x=="8" ? "Result2" :
"Result3";
}