在我的表中,我使用IsTrue
列的位類型。T-SQL中的位類型
當我執行select命令:
SqlDataReader reader = command.ExecuteReader();
我不知道那會是什麼reader["isTrue"]
回報?
我試着做了比較
reader["isTrue"].ToString().Equals("0")
,但它沒有很好地工作。有人能告訴我我做錯了什麼嗎?
在我的表中,我使用IsTrue
列的位類型。T-SQL中的位類型
當我執行select命令:
SqlDataReader reader = command.ExecuteReader();
我不知道那會是什麼reader["isTrue"]
回報?
我試着做了比較
reader["isTrue"].ToString().Equals("0")
,但它沒有很好地工作。有人能告訴我我做錯了什麼嗎?
它返回一個布爾值。
bool value = (bool)reader["IsTrue"];
如果你知道在結果集中的列的索引,你可以使用:
bool value = reader.GetBoolean(index);
如果你不知道列的索引,'GetOrdinal'會告訴你它是什麼。 – Gabe
我喜歡擴展方法做到這一點:
public static bool ToBool(this string theString)
{
bool result = false;
bool.TryParse(theString, out result);
return result;
}
而在你的代碼你可以簡單地做到這一點:
if(reader["isTrue"].ToBool())
{
}
該ToBool擴展方法將在下列情況下返回真/假:
當你執行它,除非「IsTrue運算」一欄未出現在結果集中,顯然它永遠不會拋出異常。
因爲'bool.TryParse'已經將它設置爲默認值(即'false'),所以分配'result = false'沒有意義。在C#7中,這甚至可以簡化爲'bool.TryParse(theString,outbool結果);返回結果;'。 – Manuzor
它「工作不正常」?那是什麼意思? 'reader [「isTrue」]。ToString()'return? – Gabe
它沒有按照我的預期工作:) – Xitrum
當某些東西不能按預期工作時,您應該發佈它如何工作以及您期望它如何工作。 – Gabe