Comment convertir “0” et “1” en faux et vrai

J’ai une méthode qui se connecte à une firebase database via Odbc. La procédure stockée que j’appelle a une valeur de retour qui du côté de la firebase database est un «Char». En ce moment, je saisis cette valeur de retour sous forme de chaîne et l’utilise dans une simple instruction if. Je n’aime vraiment pas l’idée de comparer une chaîne comme celle-ci lorsque seules deux valeurs peuvent revenir de la firebase database, 0 et 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(); ssortingng returnValue = fetchCommand.Parameters["@myReturnValue"].Value.ToSsortingng(); if (returnValue == "1") { return true; } 

Quelle serait la bonne façon de gérer cette situation. J’ai essayé ‘Convert.ToBoolean ()’ qui semblait être la réponse évidente mais j’ai trouvé que ‘Ssortingng n’était pas reconnu comme un booléen valide. ‘exception étant lancée. Est-ce que je manque quelque chose ici, ou y a-t-il une autre façon de faire en sorte que «1» et «0» agissent comme si c’était vrai et faux?

Merci!

Que diriez-vous:

 return (returnValue == "1"); 

ou comme suggéré ci-dessous:

 return (returnValue != "0"); 

Le bon dépendra de ce que vous recherchez comme résultat de réussite.

En une seule ligne de code:

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

Si vous voulez que la conversion réussisse toujours, le meilleur moyen de convertir la chaîne est probablement de considérer "1" comme étant true et tout autre chose comme false (comme le fait Kevin). Si vous vouliez que la conversion échoue si quelque chose d’autre que "1" ou "0" est renvoyé, alors ceci suffirait (vous pourriez le mettre dans une méthode d’assistance):

 if (returnValue == "1") { return true; } else if (returnValue == "0") { return false; } else { throw new FormatException("The ssortingng is not a recognized as a valid boolean value."); } 

Définissez le type de retour sur numérique – vous n’avez pas besoin d’un caractère (donc ne l’utilisez pas); une valeur numérique (0/1) peut être convertie avec Convert.ToBoolean (num)

Sinon: utilisez la réponse de Kevin

Vous pouvez utiliser ce formulaire:

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

Ou plus simplement (merci à Jurijs Kastanovs):

 return returnValue.Equals("1"); 

Ou si la valeur booléenne n’est pas retournée, vous pouvez faire quelque chose comme ceci:

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

Si vous ne voulez pas convertir.

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

Vous pourrez peut-être retourner les valeurs comme vous le souhaitez.