我正在处理C#中的对象列表,每个对象都包含一个DateTime属性,我需要知道其中的n个对象是否在一个小时内发生。
我需要比较每一个对象吗?有更快的路吗?我不知道,这能和Linq一起做吗?
发布于 2013-01-25 23:20:06
你可以使用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();
}https://stackoverflow.com/questions/14531833
复制相似问题