2

如何使用 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.
4

3 回答 3

9
Enumerable.Range(0, (EndDate - StartDate).Days).Select(i => StartDate.AddDays(i))
于 2012-11-18T13:33:09.367 回答
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日期(您没有指定它)

于 2012-11-18T14:45:36.657 回答
0
List<DateTime> ListofDates = Enumerable.Range(0, (EndDate - StartDate).Days)
                                       .Select(i => StartDate.AddDays(i))
                                       .ToList();
于 2012-11-18T15:16:31.260 回答