c# .net asp.net odbc boolean-logic

c# - Cómo convertir "0" y "1" a falso y verdadero



.net asp.net (8)

En una sola línea de código:

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

Tengo un método que se conecta a una base de datos a través de Odbc. El procedimiento almacenado al que estoy llamando tiene un valor de retorno que desde el lado de la base de datos es un ''Char''. En este momento estoy agarrando ese valor de retorno como una cadena y usándolo en una simple declaración if. Realmente no me gusta la idea de comparar una cadena como esta cuando solo dos valores pueden regresar de la base de datos, 0 y 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; }

¿Cuál sería la forma correcta de manejar esta situación? He intentado con ''Convert.ToBoolean ()'' que me pareció la respuesta obvia, pero me encontré con que ''String no se reconoció como un booleano válido. ''excepción lanzada. ¿Me estoy perdiendo algo aquí, o hay otra forma de hacer que ''1'' y ''0'' actúen como verdadero y falso?

¡Gracias!


Establezca el tipo de devolución en numérico; no necesita un carácter (por lo tanto, no lo use); un valor numérico (0/1) se puede convertir con Convert.ToBoolean (num)

De lo contrario: use la respuesta de Kevin


O si el valor booleano no se ha devuelto, puede hacer algo como esto:

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


Puedes usar esa forma:

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

O más simplemente (gracias a Jurijs Kastanovs):

return returnValue.Equals("1");


Qué tal si:

return (returnValue == "1");

o como se sugiere a continuación:

return (returnValue != "0");

El correcto dependerá de lo que esté buscando como un resultado exitoso.


Si desea que la conversión siempre tenga éxito, probablemente la mejor manera de convertir la cadena sería considerar "1" como true y cualquier otra cosa como false (como lo hace Kevin). Si desea que la conversión falle si se devuelve algo que no sea "1" o "0" , entonces bastará con lo siguiente (puede ponerlo en un método de ayuda):

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."); }


Si no quieres convertir. Solo uso;

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

Tal vez devolverá los valores que desee.


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