【问题标题】:Get list of dates from StartDate to EndDate获取从 StartDate 到 EndDate 的日期列表
【发布时间】:2012-11-19 00:13:09
【问题描述】:

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

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:
    Enumerable.Range(0, (EndDate - StartDate).Days).Select(i => StartDate.AddDays(i))
    

    【讨论】:

    • 它会根据我们的需要返回 List 列表
    • @SOFUser:这确实会返回 DateTimes。
    【解决方案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 日期(您没有指定)

    【讨论】:

      【解决方案3】:
      List<DateTime> ListofDates = Enumerable.Range(0, (EndDate - StartDate).Days)
                                             .Select(i => StartDate.AddDays(i))
                                             .ToList();
      

      【讨论】:

        猜你喜欢
        • 2013-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多