1

是否有任何辅助方法可以在 C# 中生成日期?

例如,我有一个显示日期的网格,显示给定两个日期之间所有日期的日期。如果我选​​择 2013 年 1 月 1 日到 2013 年 2 月 5 日......它应该生成这两个日期之间的所有日期......

我尝试了While Loop如下

 while (startdate <= enddate)
 {         
      var calendarDate = CreateDate();
      calendarDate.CalendarDate = startdate.Date;
      if (calendarDate.DayofWeek == DayOfWeekValues.Sunday.Value)
      {
           calendarDate.IsHoliday = true;
      }       
      startdate = startdate.AddDays(1.0);
 }
4

2 回答 2

8

目前尚不清楚您的循环有什么问题,看起来您只需将日期添加到一个集合中,例如List<DateTime>. 但是,您也可以使用 LINQ:

int days = (enddate - startdate).Days + 1;
List<DateTime> dateRange = Enumerable.Range(0, days)
    .Select(i => startdate.AddDays(i))
    .ToList();

编辑:因为您不使用DateTime自定义类:

我不知道所涉及的类和方法,但是,这应该有助于在循环中实现与您相同的逻辑(假设HolidayCalendarDetail是类):

List<HolidayCalendarDetail> dates = Enumerable.Range(0, days)
.Select(i => 
{
    var calendarDate = e.CreateHolidayCalendarDetail();
    calendarDate.CalendarDate = startdate.AddDays(i);
    calendarDate.IsHoliday = calendarDate.CalendarDate.DayOfWeek == JobScheduleDayOfWeekValues.Sunday.Value;
    return calendarDate;
}).ToList();
于 2013-11-11T10:07:38.190 回答
0

这已经在这里介绍过:Exploding a range of dates with LINQ

我认为没有内置的 .Net 助手,但您当然可以使用 LINQ 或 while 循环来实现它。

于 2013-11-11T10:08:43.087 回答