Asp.net mvc 将15分钟的时间段聚合到30分钟的时间段
我有一张间隔15分钟的时段表。 每个插槽都可以绑定一个活动,使插槽成为“保留”状态 以30分钟为一组返回插槽的最佳方式是什么 那么基本上,我该怎么做呢: 10:00 10:15=这是一个预留插槽 10:30 对此: 10:00 10:30 然后整个插槽被保留,因为它包含保留的10:15插槽 而不改变插槽本身的大小 这是否可以在linq查询本身中实现,或者我必须返回15分钟插槽的集合,然后应用30分钟逻辑 请给我指出正确的方向,谢谢 插槽是具有以下属性和类型的对象:Asp.net mvc 将15分钟的时间段聚合到30分钟的时间段,asp.net-mvc,linq,datetime,aggregate,Asp.net Mvc,Linq,Datetime,Aggregate,我有一张间隔15分钟的时段表。 每个插槽都可以绑定一个活动,使插槽成为“保留”状态 以30分钟为一组返回插槽的最佳方式是什么 那么基本上,我该怎么做呢: 10:00 10:15=这是一个预留插槽 10:30 对此: 10:00 10:30 然后整个插槽被保留,因为它包含保留的10:15插槽 而不改变插槽本身的大小 这是否可以在linq查询本身中实现,或者我必须返回15分钟插槽的集合,然后应用30分钟逻辑 请给我指出正确的方向,谢谢 插槽是具有以下属性和类型的对象: TimeslotId (int
TimeslotId (int)
SlotStart (DateTime)
ActivityId (int)
更新:
好的,我尝试用这个查询对插槽进行分组
var groups = service.TestGrouping().GroupBy(x =>
{
var stamp = x.SlotStart;
stamp = stamp.AddMinutes(-(stamp.Minute % 30));
stamp = stamp.AddMilliseconds(-stamp.Millisecond - 1000 * stamp.Second);
return stamp;
}).Select(g => new Sample() { GroupTime = g.Key, GroupedSlots = g.ToList() }).ToList();
这让我更接近了。现在我得到的插槽聚合到最接近30分钟,比如8:00-8:30,8:30-9:00
但是,这不适用于四分之一到四分之一之间的插槽。我需要一些逻辑来抓住所有可能的半小时:
8:00-8:30,8:15-8:45,8:30-9:00,8:45-9:15。
逻辑是什么样的?您要处理多少个时隙?我猜在查询所有已填充的内容后处理这些内容将是您的最佳选择。我每天演示的内容中至少有144个。我不认为您可以在LINQ中使用LINQ to SQL来处理这些内容。也许您可以使用LINQ进行内存计算,但我会使用常规的循环和逻辑,以使代码在这种情况下更可读。嗯,我想您是对的。我将尝试常规循环。