如何将“0”和“1”转换为false和true

时间:2010-04-15 18:44:18

标签: c# .net asp.net odbc boolean-logic

我有一个通过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()' 就像明显的答案,但我遇到了'字符串未被识别为有效的布尔值。 '抛出异常。我错过了什么 在这里,还是有另一种方法让'1'和'0'表现得像真假一样?

谢谢!

9 个答案:

答案 0 :(得分:137)

怎么样:

return (returnValue == "1");

或如下所示:

return (returnValue != "0");

正确的一个取决于您所寻找的成功结果。

答案 1 :(得分:92)

在一行代码中:

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

答案 2 :(得分:12)

如果您希望转换始终成功,那么转换字符串的最佳方法可能是将"1"视为true,将其他任何内容视为false(如Kevin所做)。如果您希望转换失败,如果返回"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.");
}

答案 3 :(得分:5)

将返回类型设置为numeric - 您不需要char(所以不要使用它);可以使用Convert.ToBoolean(num)

转换数值(0/1)

否则:使用Kevin的回答

答案 4 :(得分:3)

您可以使用该表单:

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

或更简单(感谢Jurijs Kastanovs):

return returnValue.Equals("1");

答案 5 :(得分:1)

或者,如果未返回布尔值,则可以执行以下操作:

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

答案 6 :(得分:0)

我的解决方案(vb.net):

Private Function ConvertToBoolean(p1 As Object) As Boolean
    If p1 Is Nothing Then Return False
    If IsDBNull(p1) Then Return False
    If p1.ToString = "1" Then Return True
    If p1.ToString.ToLower = "true" Then Return True
    Return False
End Function

答案 7 :(得分:-1)

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

答案 8 :(得分:-1)

如果您不想转换。只需使用;

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

也许您会根据需要返回值。