获取从StartDate到EndDate的日期列表

时间:2012-11-18 13:31:09

标签: c# linq lambda

如何使用linq或lambda表达式获取开始日期和结束日期之间的日期列表。

DateTime StartDate = DateTime.Now;
DateTime EndDate = DateTime.Now.AddMonths(13);
List<DateTime> ListofDates = //Contains list of all dates only between start and end date.

3 个答案:

答案 0 :(得分:9)

Enumerable.Range(0, (EndDate - StartDate).Days).Select(i => StartDate.AddDays(i))

答案 1 :(得分:2)

首先,当您想要Dates而不是Datetimes时,最好使用DateTime.Now.Date而不是DateTime.Now

我编辑了SLaks代码,因此您可以获得所需的日期列表。

DateTime StartDate = DateTime.Now.Date;
DateTime EndDate = DateTime.Now.Date.AddMonths(13);
IEnumerable<double> daysToAdd = Enumerable.Range(0,
                                                (EndDate - StartDate).Days + 1)
                                            .ToList().ConvertAll(d => (double)d);
IEnumerable<DateTime> ListOfDates = daysToAdd.Select(StartDate.AddDays).ToList();

请注意,我在可枚举项中添加了+1,因此您可以同时拥有startend日期(您没有指定)

答案 2 :(得分:0)

List<DateTime> ListofDates = Enumerable.Range(0, (EndDate - StartDate).Days)
                                       .Select(i => StartDate.AddDays(i))
                                       .ToList();