我的視圖模型有一個可爲空日期屬性,如...如何使用空合併運算符可空日期
[DataType(DataType.Date)]
public DateTime? SanctionExpires { get; set; }
但是當我嘗試使用空合併運算符,如...
var test = model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires;
我得到以下錯誤...
運營商 '?'不能應用於類型「日期時間」和 「日期時間」
的操作數我想這應該工作,因爲我把我的財產日期可空和this post表明,它應該工作了。我究竟做錯了什麼?
UPDATE
爲了讓更多的清晰度我想用空coaslescing分配,這將在我的數據庫更新日期時間字段一個小巧玲瓏的參數。該字段可以接受空值或日期時間值。基本上,如果用戶指定一個日期,然後分配提供日期參數以其他方式轉讓空...
p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires);
請注意,我必須做的UTC轉換,因爲我使用SQL Azure的,它使用UTC的日期,否則我的時間超過了11個小時(我在澳大利亞),如果我只是從我的本地系統傳遞數據。在SQL中,我正在使用一個函數來將日期偏移到我的時區,然後更新表。
我目前的解決方案讓它工作在低於但不確定這是否是最乾淨的方式。將是很好的一個一線得到...
if (model.SanctionExpires == null)
p.Add("@SanctionExpires", model.SanctionExpires);
else
p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime());
您的問題並不完全合理。爲了嘗試理解它(對於我們和你),嘗試刪除你的var並且包含一個實際的類型 - 你希望你的輸出是什麼? – Paddy
'SanctionExpires'是一個'可空的',但'SanctionExpires.Value'是'DateTime'。 –
當'model.SanctionExpires'爲'null'時,'test'需要*什麼值? (你會得到*這個代碼(如果它編譯)是一個NullReferenceException) –