如何在确定的时间间隔内比较多个DateTimes是否发生?

时间:2013-01-25 23:16:10

标签: c# linq oop datetime compare

我正在使用C#中的对象列表,每个对象包含一个DateTime属性,我需要知道对象的 n 是否在一小时内发生。

我是否必须比较每个对象?有更快的方法吗?我不知道,这可以用Linq完成吗?

1 个答案:

答案 0 :(得分:4)

您可以使用Where + Count

// for example today between 12 and 13 o'clock
DateTime startHour = DateTime.ToDay.AddHours(12)
DateTime endHour = startHour.AddHours(1);
var inHour = collection.Where(o => o.DateTimeProperty >= startHour 
                                && o.DateTimeProperty <= endHour);
int count = inHour.Count();

当然这与简单的循环相同。但这就是你必须走的路。

你也可以使用GroupBy,但我不明白为什么你需要它。

var hourGroup = collection
   .GroupBy(o => o.DateTimeProperty.AddMinutes((-1) * o.DateTimeProperty.Minute))
   .FirstOrDefault(g => g.Key == startHour);
if(hourGroup != null)
{
    int count = hourGroup.Count();
}