2013-10-21 38 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

相关问题