基于LINQ实现相似预订日期范围分组的功能求助
业务分组需求与LINQ解决方案请求
核心需求
实现Group方法,输入为IEnumerable<Booking>类型,输出为IEnumerable<BookingGrouping>类型。分组规则:将每日预订按项目与分配额度完全一致的标准,划分成连续的日期范围组,每个组内的所有日期对应的预订项目和分配额度完全相同。
示例数据
(此处需补充具体输入输出示例,例如:
输入示例:
日期 项目 分配额度 2024-01-01 A 10 2024-01-02 A 10 2024-01-03 B 15 2024-01-04 B 15 2024-01-05 A 10 预期输出示例:
3个分组:
- 日期范围2024-01-01至2024-01-02,对应项目A、额度10
- 日期范围2024-01-03至2024-01-04,对应项目B、额度15
- 日期范围2024-01-05至2024-01-05,对应项目A、额度10)
相关类定义
BookingGrouping.cs 代码
// 请补充完整类定义,示例结构参考: public class BookingGrouping { public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public IEnumerable<BookingGroupingItem> Items { get; set; } }
BookingGroupingItem.cs 代码
// 请补充完整类定义,示例结构参考: public class BookingGroupingItem { public string Project { get; set; } public int Allocation { get; set; } }
Booking.cs 代码
// 请补充完整类定义,示例结构参考: public class Booking { public DateTime Date { get; set; } public string Project { get; set; } public int Allocation { get; set; } }
已尝试的未完成代码
// 请补充你编写的部分代码,示例参考: public IEnumerable<BookingGrouping> Group(IEnumerable<Booking> bookings) { var sortedBookings = bookings.OrderBy(b => b.Date); var groupedByProjectAndAllocation = sortedBookings.GroupBy(b => new { b.Project, b.Allocation }); // 连续日期范围的分组逻辑未完成 ... }
解决方案要求
基于LINQ实现完整的分组逻辑,准确识别连续日期范围内的相同项目与分配额度组合,输出符合BookingGrouping结构的结果。
内容的提问来源于stack exchange,提问作者Tahir Aziz
相关产品推荐
相关产品推荐

