2014-09-11 61 views
1

下面的代碼工作正常,可爲空值的日期時間:值不可爲空的System.DateTime

lastSync = syncHistsQuery.Max(m => m.Value); 

爲什麼相同的代碼不是不可爲空的日期時間工作嗎?這是錯誤:

'System.DateTime' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'System.DateTime' could be found (are you missing a using directive or an assembly reference ?) 

我是否必須將DateTime更改爲數據庫中的Nullable DateTime?是否有不同的方式來編寫不可爲空的DateTimes的代碼?

這裏是在情況下,整個功能它可以幫助:

public static DateTime GetMaxSyncDateTime() 
{ 
    DateTime lastSync = DateTime.MinValue; 
    using (var db = new CarbonContext()) 
    { 
     var syncHistsQuery = from s in db.SyncHistories 
           select s.SyncHistDateTime; 

     lastSync = syncHistsQuery.Max(m => m.Value); 
    } 
    return lastSync; 
} 
+1

試試看:'syncHistsQuery.Max();' – 2014-09-11 13:02:39

回答

3

由於非可空DateTime沒有Value property.You使用

lastSync = syncHistsQuery.Max(); 

如果您正在使用DateTimes工作。

2

A DateTime沒有.Value屬性,這是Nullable<T>

你可以這樣做:

lastSync = syncHistsQuery.Max(m => m); 

或者,正如指出的那樣,你可以把它縮短到:

lastSync = syncHistsQuery.Max(); 
+0

'm => m'沒有意義 - 更好的是沒有參數的重載。 – 2014-09-11 13:03:36

+0

@pwas新增,thanx。 – Maarten 2014-09-11 13:08:57

相關問題