Как преобразовать "0" и "1" в false и true

У меня есть метод, который подключается к базе данных через Odbc. Хранимая процедура, которую я вызов имеет возвращаемое значение, которое со стороны базы данных является "Char". Прямо сейчас я хватаю которые возвращают значение в виде строки и используют ее в простой инструкции 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;
} 

Каким будет правильный способ справиться с этой ситуацией. Я пробовал "Convert.ToBoolean()", который казался как явный ответ, но я столкнулся с "String" не был признан допустимым булевым. исключение. Я что-то упускаю здесь, или есть другой способ сделать "1" и "0" действовать как истина и ложь?

Спасибо!

Ответ 1

Как насчет:

return (returnValue == "1");

или как предложено ниже:

return (returnValue != "0");

Правильный вариант будет зависеть от того, что вы ищете как результат успеха.

Ответ 2

В одной строке кода:

bool bVal = Convert.ToBoolean(Convert.ToInt16(returnValue))

Ответ 3

Если вы хотите, чтобы преобразование всегда было успешным, вероятно, лучшим способом преобразования строки было бы рассмотреть "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.");
}

Ответ 4

Установите тип возврата в числовой - вам не нужен char (поэтому не используйте его); числовое значение (0/1) можно преобразовать с помощью Convert.ToBoolean(num)

В противном случае: используйте ответ Кевина

Ответ 5

Вы можете использовать эту форму:

return returnValue.Equals("1") ? true : false;

Или проще (спасибо Юрию Кастанову):

return returnValue.Equals("1");

Ответ 6

Или, если логическое значение не возвращено, вы можете сделать что-то вроде этого:

bool boolValue = (returnValue == "1");

Ответ 7

(returnValue != "1" ? false : true);

Ответ 8

Если вы не хотите конвертировать. Просто используйте

 bool _status = status == "1" ? true : false;

Возможно, вы вернете значения, как хотите.