c# - 对 IEnumerable 对象中的连续日期进行分组
问题描述
我有一个具有 2 个日期时间属性的 C# 类
public class Event
{
public string Name {get; set;}
public DateTime Start {get; set;}
public DateTime End {get; set;}
}
调用第 3 方 API 后,我得到一个反序列化的事件列表。
IEnumerable<Event> events = GetEvents();
这是上下文
1. These are calender events
2. Each object is one entity on a calender
现在的问题是,
假设活动日期是这样的
1月20日, 1月21日, 1月22日, 1月23日, 1月25日, 1月26日, 1月28日, 1月30日
然后第 3 方 API 返回这样的结果。
{
Start: Jan 20,
End: Jan 20
},
{
Start: Jan 21,
End: Jan 21
},
{
Start: Jan 22,
End: Jan 22
},
{
Start: Jan 23,
End: Jan 23
},
{
Start: Jan 25,
End: Jan 25
},
{
Start: Jan 26,
End: Jan 26
},
{
Start: Jan 28,
End: Jan 28
},
{
Start: Jan 30,
End: Jan 30
}
但我想要的是将连续的邻近事件转换并分组为单个实体。所以结果应该是这样的。意味着连续的日期应该是一个单一的实体
{
Start: Jan 20, //Because 20-23 are consicutive days. No gaps in between
End: Jan 23
},
{
Start: Jan 25, // Because 25-26 are concisutive days. No gaps in between
End: Jan 26
},
{
Start: Jan 28,
End: Jan 28
},
{
Start: Jan 30,
End: Jan 30
}
如何使用某种形式的转换函数来实现它?
解决方案
推荐阅读
- java - MATCH_PARENT/XML 和以编程方式生成的按钮之间的水平填充像素差异
- angular - 由于 localStorage 变量的值而动态更改导航栏的问题
- python - 计算从最接近的矩阵获得的矩阵索引的平均值
- java - 如何扩展 Android Chronometer?
- python - 关于使用 dict 拆分数据帧的错误
- vue.js - webpack 将不同入口点的所有依赖项捆绑在一个包中,并在所有相应的 html 中使用相同的包
- swift - 如何在可可应用程序中合成鼠标点击?
- xamarin.forms - 使用 xamarin.forms 未完全加载 ListView 项目
- quantum-computing - 在真正的量子计算机上测试 Q# 代码?
- animation - 调整大小时的 SwiftUI 文本剪辑