2013-10-21 33 views
2

我試圖計算列表中的對象。我的代碼如下所示:使用Linq在兩個日期之間計數對象列表

var count = tempMessages 
       .Where(MessageDate => MessageDate > DateTime.Now.AddSeconds(-6)) 
       .Count(); 

正如你所看到的,我想算的消息,其中MessageDate是最大6秒歲。但我收到此錯誤信息:

操作「>」不能應用於 型「ChatProj.Models.Message」的操作數和「System.DateTime的」

+0

錯誤不告訴你,你錯了。你正在試圖比較你的'對象'和'datetime'。我認爲你缺少聲明'MessageDate'的屬性,即'MessageDate.Date' –

回答

3

tempMessages是可枚舉的自定義類Message,該Where類將採取作爲參數來表達,所以你需要在它訪問日期屬性:

還有上Count過載,可以採取一個表達式保存做Wherehttp://msdn.microsoft.com/en-us/library/bb535181.aspx

var checkDate = DateTime.Now.AddSeconds(-6); 

var count = tempMessages 
    .Count(message => message.Date > checkDate); 

錯誤消息凸顯這一點,你想說「是我的消息比這個日期更大」,而不是「是這樣的消息比這個日期更大的日期」 。

+0

感謝您的解釋和幫助!現在運行,如下所示: 'var count = tempMessages.Where(Message => Message.MessageDate> DateTime.Now.AddSeconds(-6))。Count();' – JazzMaster

3

因爲tempMessages是類型的列表「ChatProj.Models.Message而不是日期時間,可能存在對消息的日期屬性,所以你可以這樣寫代碼:

var count = tempMessages.Where(Message => Message.Date > DateTime.Now.AddSeconds(-6)).Count(); 
+1

感謝您的幫助!現在工作!看起來像這樣: var count = tempMessages.Where(Message => Message.MessageDate> DateTime.Now.AddSeconds(-6))。Count();' – JazzMaster

相關問題