我必须测试一个条件,当dr["QUALITY"].ToString()
的值不为“ A”或dr["QUALITY"].ToString()
的值不为“ D”时,仅应执行if块。但是,if
块代码在值为“ A”时执行。
string test = dr["QUALITY"].ToString();
if ((!dr["QUALITY"].ToString().Equals("A")) || (!dr["QUALITY"].ToString().Equals("D")))
{
dr["QUALITY_GRD"] = Calc_Rank(Convert.ToInt32(dr["QUALITY"].ToString()), 0);
dr["QUALITY_PT"] = Calc_Grade(dr["QUALITY_GRD"].ToString(), 1);
}
else
{
dr["QUALITY_GRD"] = "";
dr["QUALITY_PT"] = "";
}
此处,当值为“ A”时,将执行if
块代码。我不明白代码有什么问题。请提出建议。谢谢!!!
答案 0 :(得分:2)
在您的情况下,当QUALITY
为"A"
时,则您的第二部分为if
陈述
(!dr["QUALITY"].ToString().Equals("D"))
是真的
所以您的代码应该看起来像这样
string quality = dr["QUALITY"].ToString();
if (quality != "A" && quality != "D")
{
dr["QUALITY_GRD"] = Calc_Rank(Convert.ToInt32(quality), 0);
dr["QUALITY_PT"] = Calc_Grade(dr["QUALITY_GRD"].ToString(), 1);
}
else
{
dr["QUALITY_GRD"] = "";
dr["QUALITY_PT"] = "";
}
答案 1 :(得分:2)
您需要使用&&
代替||
当前读取的代码是非A
还是非D
因此,如果您将其传递给A
,则它仍然是正确的,因为它不是D
答案 2 :(得分:1)
代码中的错误是OR(||)比较和两个否定条件。检查以下伪代码:
If ( character is not A OR character is not D )
=> Always true.
因此更改与此:
if ((!dr["QUALITY"].ToString().Equals("A")) && (!dr["QUALITY"].ToString().Equals("D")))