2012-02-08 82 views

回答

10

Boolean.Parse文檔:

真,如果值是等效於Boolean.TrueString字段的值;如果值等於Boolean.FalseString字段的值,則返回false。

10並不等同於字符串"true""false"

假設你SomeColumnName確實是一個布爾字段,你可以這樣做:

return Convert.ToString(Dataset.Tables[0].Rows[0]["SomeColumnName"]) == "1"; 

或者直接轉換爲Boolean(感謝@Bolu):

return Convert.ToBoolean(Dataset.Tables[0].Rows[0]["SomeColumnName"]); 
+0

好的,謝謝。你能告訴我在我的情況下檢查TRUE或FALSE的最佳方法是什麼? – 2012-02-08 11:02:20

+0

@Oded:我可以使用:'Convert.ToBoolean(Dataset.Tables [0] .Rows [0] [「SomeColumnName」])'? – Bolu 2012-02-08 11:37:26

+0

@Bolu - 是的,應該可以正常工作。 – Oded 2012-02-08 11:38:56

3

兩者from MSDN

當此方法返回時,如果轉換成功,則如果值等於Boolean.TrueString o,則返回true如果值等於FalseString,則返回false。如果轉換失敗,則包含false。如果value爲null或者不等於TrueString或FalseString字段的值,則轉換將失敗。

1不等同於Boolean.TrueString"true"或任何情況下的變體),以使轉換失敗(TryParse返回false)和輸出參數(在這種情況下somevariable)被設定爲default(bool)這是false

1

如果「1」是字符串,它不會將其解析爲布爾值true。如果它是字符串「真」,那麼它會將其解析爲布爾真。

5

這裏是我的例程,在許多項目中共享的文件:

/// <summary> 
    /// Legal values: Case insensitive strings TRUE/FALSE, T/F, YES/NO, Y/N, numbers (0 => false, non-zero => true) 
    /// Similar to "bool.TryParse(string text, out bool)" except that it handles values other than 'true'/'false' and handles numbers like C/C++ 
    /// </summary> 
    public static bool TryParseBool(object inVal, out bool retVal) 
    { 
     // There are a couple of built-in ways to convert values to boolean, but unfortunately they skip things like YES/NO, 1/0, T/F 
     //bool.TryParse(string, out bool retVal) (.NET 4.0 Only); Convert.ToBoolean(object) (requires try/catch) 
     inVal = (inVal ?? "").ToString().Trim().ToUpper(); 
     switch ((string)inVal) 
     { 
      case "TRUE": 
      case "T": 
      case "YES": 
      case "Y": 
       retVal = true; 
       return true; 
      case "FALSE": 
      case "F": 
      case "NO": 
      case "N": 
       retVal = false; 
       return true; 
      default: 
       // If value can be parsed as a number, 0==false, non-zero==true (old C/C++ usage) 
       double number; 
       if (double.TryParse((string)inVal, out number)) 
       { 
        retVal = (number != 0); 
        return true; 
       } 
       // If not a valid value for conversion, return false (not parsed) 
       retVal = false; 
       return false; 
     } 
    }