使用Linq在2个日期之间计算对象列表

时间:2013-10-21 09:31:57

标签: c# linq list date count

我正在尝试计算列表中的对象。我的代码如下所示:

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

正如您所看到的,我正在尝试计算MessageDate最长6秒的消息。但我收到此错误消息:

  

运营商'>'不能应用于类型的操作数   'ChatProj.Models.Message'和'System.DateTime'

2 个答案:

答案 0 :(得分:4)

因为tempMessages是一个类型为'ChatProj.Models.Message而不是DateTime的列表,所以可能在Message上有一个Date属性,所以你可以编写这段代码:

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

答案 1 :(得分:3)

tempMessages是自定义类Message的可枚举,Where类将其作为表达式的参数,因此您需要访问其中的日期属性:< / p>

Count上还有一个重载,可以使用表达式来保存Wherehttp://msdn.microsoft.com/en-us/library/bb535181.aspx

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

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

错误消息突出显示此消息,您试图说“我的消息大于此日期”,而不是“此消息的日期大于此日期”。