Как преобразовать "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");