Asp.net mvc 将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

我有一张间隔15分钟的时段表。 每个插槽都可以绑定一个活动,使插槽成为“保留”状态

以30分钟为一组返回插槽的最佳方式是什么

那么基本上,我该怎么做呢:

10:00

10:15=这是一个预留插槽

10:30

对此:

10:00

10:30

然后整个插槽被保留,因为它包含保留的10:15插槽

而不改变插槽本身的大小

这是否可以在linq查询本身中实现,或者我必须返回15分钟插槽的集合,然后应用30分钟逻辑

请给我指出正确的方向,谢谢

插槽是具有以下属性和类型的对象:

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进行内存计算,但我会使用常规的循环和逻辑,以使代码在这种情况下更可读。嗯,我想您是对的。我将尝试常规循环。