Как преобразовать "0" и " 1 " в false и true
У меня есть метод, который подключается к базе данных через ODBC. Хранимая процедура, которой я являюсь вызов имеет возвращаемое значение, которое со стороны базы данных 'Чара'. Прямо сейчас я хватаю это возвращаемое значение в виде строки и использование его в простом операторе if. Мне очень не нравится эта идея сравнения строки, как это, когда только два значения могут вернуться из базы данных, 0 и 1.
OdbcCommand fetchCommand = new OdbcCommand(storedProc, conn);
fetchCommand.CommandType = CommandType.StoredProcedure;
fetchCommand.Parameters.AddWithValue("@column ", myCustomParameter);
fetchCommand.Parameters.Add("@myReturnValue", OdbcType.Char, 1)
.Direction = ParameterDirection.Output;
fetchCommand.ExecuteNonQuery();
string returnValue = fetchCommand.Parameters["@myReturnValue"].Value.ToString();
if (returnValue == "1")
{
return true;
}
что бы быть правильный способ справиться с этой ситуацией. Я пробовал - Обратить.ToBoolean ()', который, казалось, как и очевидный ответ, но я столкнулся со строкой " не был распознан как допустимое логическое значение. 'исключение выбрасывается. Я что-то упустил здесь, или есть другой способ заставить "1" и " 0 " действовать как истина и ложь?
спасибо!
8 ответов:
Как насчет:
return (returnValue == "1");
или как предложено ниже:
return (returnValue != "0");
правильным будет зависеть от того, что вы ищете в результате успеха.
если вы хотите, чтобы преобразование всегда удавалось, вероятно, лучшим способом преобразования строки было бы рассмотреть
"1"
какtrue
и все остальное, какfalse
(как Кевин). Если вы хотите, чтобы преобразование потерпело неудачу, если что-то другое, чем"1"
или"0"
возвращается, то следующего будет достаточно (вы можете поместить его в вспомогательный метод):if (returnValue == "1") { return true; } else if (returnValue == "0") { return false; } else { throw new FormatException("The string is not a recognized as a valid boolean value."); }
Установите тип возврата в numeric-вам не нужен символ (поэтому не используйте его); числовое значение (0/1) может быть преобразовано с помощью Convert.ToBoolean(Нум)
в противном случае: используйте ответ Кевина
Вы можете использовать эту форму:
return returnValue.Equals("1") ? true : false;
или проще (спасибо Юрию Кастанову):
return returnValue.Equals("1");