如何将“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; 

也许你会返回你想要的值。