логика оператора if с условием OR - PullRequest
0 голосов
/ 25 марта 2019

Я должен проверить условие, чтобы когда значение 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"] = "";
}

Здесь код блока if выполняется, когда значение равно «A».Я не могу понять, в чем проблема с кодом.Пожалуйста, предложите.Спасибо !!!

Ответы [ 3 ]

2 голосов
/ 25 марта 2019

Вам нужно использовать && вместо ||

Код в настоящее время читает, если он не A или нет D

Итак, если вы передадите егоA это все еще верно, потому что это не D

2 голосов
/ 25 марта 2019

В вашем случае, когда 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 голос
/ 25 марта 2019

Ошибка в вашем коде - ИЛИ (||) сравнение и два условия отрицания.Проверьте следующий псевдокод:

If ( character is not A OR character is not D )
 => Always true.

Поэтому измените сравнение на следующее:

if ((!dr["QUALITY"].ToString().Equals("A")) && (!dr["QUALITY"].ToString().Equals("D")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...