如何将“0”和“1”转换为false和true
我有一个通过Odbc连接到数据库的方法。 我调用的存储过程有一个返回值,从数据库端是一个“字符”。 现在我把这个返回值作为一个string来抓取,并在简单的if语句中使用它。 我真的不喜欢比较像这样的string的想法,只有两个值可以从数据库中返回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不被识别为有效的布尔值。 被抛出的exception 我在这里错过了什么,还是有另外一种方法让“1”和“0”的行为如同真假?
谢谢!
怎么样:
return (returnValue == "1");
或者如下所示:
return (returnValue != "0");
正确的将取决于你在寻找什么成功的结果。
在一行代码中:
bool bVal = Convert.ToBoolean(Convert.ToInt16(returnValue))
如果你想要转换总是成功的,可能最好的方法来转换string将被视为"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."); }
设置返回types为数字 – 你不需要一个字符(所以不要使用它); 数值(0/1)可以用Convert.ToBoolean(num)
否则:使用凯文的答案
你可以使用这种forms:
return returnValue.Equals("1") ? true : false;
或者更简单一点(感谢Jurijs Kastanovs):
return returnValue.Equals("1");
或者,如果布尔值没有被返回,你可以这样做:
bool boolValue = (returnValue == "1");
(returnValue != "1" ? false : true);
如果你不想转换,请使用;
bool _status = status == "1" ? true : false;
也许你会返回你想要的值。