2016-01-13 41 views
0

我在我的ASP.Net 4.0網頁(用C#編寫)中有一個名爲EmployeeInformation的哈希表,我想檢查Hashtable中的特定項目(「DateEff」)有一個空值。當我用調試器瀏覽代碼時,我發現EmployeeInformation [「DateEff」]的值爲{Null}。然而,當我得到這個條件:無法在C#程序中測試空哈希表值

if (EmployeeInformation["Context"].ToString() != "Existing" && EmployeeInformation["DateEff"] != null && EmployeeInformation["DateEff"].ToString() != "") 
    <do something here> 

我的代碼看到,所有這三個條件都滿足,並繼續到代碼「做的東西在這裏」行。我試過使用

string.IsNullOrEmpty(EmployeeInformation["DateEff"]) 

也是,但結果是一樣的。我也檢查過EmployeeInformation包含了DateEff這個關鍵字,它的確如此。有誰知道爲什麼會發生這種情況?


基於下面的MethodMan的評論,我回過頭來看看我是如何填充Hashtable的。下面是我在做什麼:

string strDateHired = txtDateHired.Text; 
      if (strDateHired == string.Empty) 
       dtDateHired = SqlDateTime.Null; 
      else 
       dtDateHired = Convert.ToDateTime(strDateHired); 
      EmployeeInformation.Add("DateEff", dtDateHired); 

所以問題是,我的值不爲空,這是SqlDateTime.Null。但我該如何測試?我無法將EmployeeInformation [「DateEff」]轉換爲DateTime,因爲它是空的。

+0

是'null ||空'有一個區別,你可以顯示更多的代碼,例如你如何填充HashTable ..?你也可以更改代碼來檢查是否包含|| ContainsKey'函數 – MethodMan

+0

注意日期是簡單類型。如果您的'DateEff'不是可以爲空的日期,它將永遠不會爲空。 – pnm

回答

1

我認爲(根據您的澄清)Convert.IsDBNull(DateEff)將是真實的。您正在將該值設置爲DBNull,而不是由c#定義的值。

好玩!

+0

就是這樣!謝謝你!是的,我玩得很開心。 ;) – Melanie

+0

此外,只是一個建議,你可能想修改你的答案,以表明它真的是Convert.IsDBNull()。 – Melanie

0

如果您要求提供一個您認爲從未填充過的虛假字段,請問<do something here>曾經運行過嗎?如果是這樣,我會懷疑DataEff是否在你不期待的時候被填充。