2015-11-27 62 views
0

我這裏這行代碼:使用日期時間與空

command.Parameters["@DateCompleted"].Value = items[i].DateCompleted.Equals("01/01/0001 12:00:00 AM") ? null : items[i].DateCompleted; 

,但我得到這個錯誤:

Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and 'System.DateTime' 

我所試圖做的是不使用01/01/0001日期和使用null,因爲該項目爲空。

附加代碼:

command.Parameters.Add("@DateCompleted", System.Data.SqlDbType.DateTime); 
+1

聽起來像是你需要看看下面的[可空結構](http://msdn.microsoft.com/en-us/library/ b3h38hb0.aspx) – MethodMan

回答

5

簡單地把空到DateTime?。另外,假設DateCompletedDateTime(應該是),那麼不要與字符串進行比較,而應該與DateTime.MinValue進行比較。

command.Parameters["@DateCompleted"].Value = 
    items[i].DateCompleted.Equals(DateTime.MinValue) 
     ? (DateTime?) null 
     : items[i].DateCompleted; 
0

使用DateTime?

command.Parameters["@DateCompleted"].Value = items[i].DateCompleted.Equals("01/01/0001 12:00:00 AM") ? (DateTime?)null : items[i].DateCompleted;

+1

與馬特一起去吧:我同意'DateTime.MinValue'方法。 –

0

爲了使用三元運算其中返回類型之一是null,另一個返回類型必須是一個空類型,這DateTime不是,作爲一個結構。你可以做的是更換nulldefault(DateTime)

DateTime value = someCondition ? default(DateTime) : items[i].DateCompleted;