2009-08-26 262 views
0

我有一個數據庫,其中布爾值被存儲爲位(1爲true,0爲false)。將它們轉換成DataRow中的.Net布爾值的最佳方式是什麼? Convert.ToBoolean似乎不起作用。將1或0轉換爲布爾值的好方法是什麼?

+0

爲什麼Convert.ToBoolean不工作?它爲我工作了多年。 – 2009-08-26 11:51:17

+0

總是返回false。發現如果我.ToString的行值,但它工作正常。 – Simon 2009-08-26 13:37:53

回答

4

如果數據庫中的數據類型爲bit,那麼根本不需要進行任何轉換。數據庫驅動程序會自動將值讀取爲布爾值,您只需將值解開即可:

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

這是最明智的解決方案。 – Noldorin 2009-08-26 11:06:27

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

如果分貝值是可空的,那麼你不應該使用:bool? flag =(row [0] [「Flag」]!= DBNull.Value)? (bool)row [0] [「Flag」]:null;代替? – JohannesH 2009-08-26 11:00:21

+0

你的代碼不會工作JohannesH,你會得到編譯錯誤 – 2009-08-26 11:09:05

+0

@JohannesH:這是一個選項。取決於在應用程序中如何處理空值。 – 2009-08-26 11:09:51

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

應該工作。然而,你可能想要考慮如何處理NULL值的情況,因爲它被認爲設置爲false,你可能或不希望成爲這種情況。

相關問題