2009-08-26 12 views
0

私はブール値がビットとして格納されているデータベースを持っています(真は1、偽は0)。これらをDataRowの.Netブール値に変換する最良の方法は何ですか? Convert.ToBooleanは機能していないようです。1または0をブール値に変換する良い方法はありますか?

+0

なぜConvert.ToBooleanは機能しませんか?それは何年も私のために働いてきました。 –

+0

常にfalseを返します。私は行の値をToString場合は、それはうまく動作することが判明した。 – Simon

答えて

4

データベースのデータ型がbitある場合は、すべての任意の変換を行う必要はありません。データベースドライバは値をブール値として自動的に読み込みます。値をアンボックスするだけで値をアンボックスするだけです。

bool value = (bool)row["field"]; 
+0

これは簡単に最も賢明な解決策です。 – Noldorin

3
bool flag = (row[0]["Flag"] != DBNull.Value) ? (bool)row[0]["Flag"] : false; 
+0

db値がNULL値である場合は、使用しないでください:bool?フラグ=(行[0] [ "フラグ"]!= DBNull.Valueの)? (ブール)行[0] ["フラグ"]:null;代わりに?あなたのコードはJohannesHを動作しません – JohannesH

+0

、エラー –

+0

@JohannesHをコンパイル取得します:それはオプションです。アプリケーションでNULLがどのように処理されるかによって異なります。 –

1
bool flag = (row[0]["Flag"] != DBNull.Value) ? Convert.ToBoolean(row[0]["Flag"]) : false 

動作するはずです。しかし、あなたはあなたがまたはケースのように希望しない可能性がfalseに設定されたものとみなされ、こことしてNULL値のケースを扱う方法について考えてほしいことがあります。

関連する問題