Как преобразовать “0” и “1” ко лжи и верный

У меня есть метод, который соединяется с базой данных через Odbc. Хранимая процедура, которую я называю, имеет возвращаемое значение, которое со стороны базы данных является 'Символом'. Прямо сейчас я захватываю то возвращаемое значение как строку и использую его в простом если оператор. Мне действительно не нравится идея сравнить строку как это, когда только два значения могут возвратиться из базы данных, 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' действие как истина и ложь?

Спасибо!

82
задан Chris 10 June 2014 в 20:56
поделиться

3 ответа

Как насчет:

return (returnValue == "1");

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

return (returnValue != "0");

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

143
ответ дан 24 November 2019 в 09:02
поделиться

Если вы хотите, чтобы преобразование всегда было успешным, вероятно, лучший способ преобразовать строку - это рассматривать "1" как истина и все остальное как ложь (как это делает Кевин). Если вы хотите, чтобы преобразование завершалось неудачно, если возвращалось что-либо, кроме "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.");
}
12
ответ дан 24 November 2019 в 09:02
поделиться

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

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

5
ответ дан 24 November 2019 в 09:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: