【发布时间】:2023-03-14 12:22:01
【问题描述】:
我有一个看起来像这样的列表。如果日期相隔 1 天(“2022,01,01”和“2022,01,02”),我需要合并此列表元素,它们的费率、roomTypeId 和 Accessibility 完全相同。DateFrom 和 DateTo 始终相同在我给出的列表中,每个可用性代表一天。
new Availability
{
Accessibility = 1,
RoomTypeId = "12345",
Rate = 50,
DateFrom = new DateTime(2022, 01, 01),
DateTo = new DateTime(2022, 01, 01)
},
new Availability
{
Accessibility = 1,
RoomTypeId = "12345",
Rate = 50,
DateFrom = new DateTime(2022, 01, 02),
DateTo = new DateTime(2022, 01, 02)
},
new Availability
{
Accessibility = 1,
RoomTypeId = "12345",
Rate = 100,
DateFrom = new DateTime(2022, 01, 04),
DateTo = new DateTime(2022, 01, 04)
},
new Availability
{
Accessibility = 6,
RoomTypeId = "12345",
Rate = 100,
DateFrom = new DateTime(2022, 01, 05),
DateTo = new DateTime(2022, 01, 05)
},
new Availability
{
Accessibility = 6,
RoomTypeId = "12345",
Rate = 100,
DateFrom = new DateTime(2022, 01, 6),
DateTo = new DateTime(2022, 01, 06)
},
结果应该是这样的:
new Availability
{
Accessibility = 1,
RoomTypeId = "12345",
Rate = 50,
DateFrom = new DateTime(2022, 01, 01),
DateTo = new DateTime(2022, 01, 02)
},
new Availability
{
Accessibility = 1,
RoomTypeId = "12345",
Rate = 100,
DateFrom = new DateTime(2022, 01, 04), <- missing (2002, 01, 03) so it should crate a new group
DateTo = new DateTime(2022, 01, 04)
},
new Availability
{
Accessibility = 6, <- different
RoomTypeId = "12345",
Rate = 100,
DateFrom = new DateTime(2022, 01, 05),
DateTo = new DateTime(2022, 01, 06)
}
我怎样才能以最优化的方式做到这一点?我尝试按 RoomTypeId 对列表进行分组,按日期排序并将日期与以前的元素进行比较,但还没有。
【问题讨论】:
-
如果连续几天获得超过 2 条
Availability记录,应该将它们合并为一条,还是只合并一对?例如。如果您收到Availability的相同可访问性、房间 ID 和房价,但日期为 Jan-05、Jan-06 和 Jan-07,则结果应该有一条从 Jan-05 到 Jan-07 的记录,还是两条记录,一份用于 Jan-05 至 Jan-06,另一份仅用于 Jan-07?