2012-11-18 39 views
2

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

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

回答

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日期(你没有指定。)

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

将返回我列表列表作为我们要列表

+0

@SOFUser:这确实会返回DateTimes。 – SLaks

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