如何比较在确定的时间间隔内是否发生了多个日期时间

本文关键字:时间 是否 发生了 日期 何比较 比较 | 更新日期: 2023-09-27 17:56:00

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

我必须比较每个对象吗?有没有更快的方法?我不知道,Linq可以做到这一点吗?

如何比较在确定的时间间隔内是否发生了多个日期时间

您可以使用

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();
}