如果我有一对日期,并且我想要生成它们之间所有日期的列表(包括),我可以执行以下操作:
System.DateTime s = new System.DateTime(2010, 06, 05);
System.DateTime e = new System.DateTime(2010, 06, 09);
var list = Enumerable.Range(0, (e - s).Days)
.Select(value => s.AddDays(value));
我坚持的是,我有一个日期对的列表,我想要将它们分解为它们之间所有日期的列表。例如:
{2010-05-06, 2010-05-09}, {2010-05-12, 2010-05-15}
应该导致
{2010-05-06, 2010-05-07, 2010-05-08, 2010-05-09, 2010-05-12, 2010-05-13, 2010-05-14, 2010-05-15}
请注意,保证日期对不会相互重叠。
答案 0 :(得分:6)
var result = listOfPairs.SelectMany(pair =>
Enumerable.Range(0, (pair.Item2 - pair.Item1).TotalDays)
.Select(days => pair.Item1.AddDays(days)));
答案 1 :(得分:0)
我认为您可以使用简单的List<DateTime>
来完成您想要的任务。
List<DateTime> list = new List<DateTime>();
list.AddRange(GetListDates(d1, d2));
list.AddRange(GetListDates(d3, d4));