我有两个DatePickers,一个用于StartDate,一个用于EndDate。例如,当用户选择5天时,我将获得5个带有日期的索引。
现在,我的问题是如何至少填充7个索引(填充的索引应该为空)?
var startDate = StartDate;
var endDate = EndDate;
List<DateTime> Days = new List<DateTime>();
for (DateTime counter = startDate; counter <= endDate; counter = counter.AddDays(1))
{
if (counter.DayOfWeek == counter.DayOfWeek)
{
Days.Add(counter);
}
}
这里是我的票价。就我而言,这是可行的,但看起来非常难看。我只用DateTime.MinValue填充列表,直到我至少有7个索引。我敢肯定有一种更好的方法,就是不知道怎么做。
var startDate = StartDate;
var endDate = EndDate;
var standart = DateTime.MinValue;
List<DateTime> Days = new List<DateTime>();
for (DateTime counter = startDate; counter <= endDate; counter = counter.AddDays(1))
{
if (counter.DayOfWeek == counter.DayOfWeek)
{
Days.Add(counter);
}
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
if (Days.Count < 7)
{
Days.Insert(Days.Count, standart);
}
您可以计算出要添加到列表中才能达到7天的天数,然后在for循环中使用它来添加它们:
var startDate = new DateTime(2020, 01, 01);
var endDate = new DateTime(2020, 01, 05);
var standart = DateTime.MinValue;
List<DateTime> Days = new List<DateTime>();
int RemainingDays = 6 + (int)startDate.Day - (int)endDate.Day;
for (DateTime counter = startDate; counter <= endDate; counter = counter.AddDays(1))
Days.Add(counter);
if (RemainingDays > 0)
for (int i = 0; i < RemainingDays; i++)
Days.Insert(Days.Count, standart);
或者,如果您不想通过另一个循环,也可以这样做:
if (RemainingDays > 0)
Days.AddRange(Enumerable.Repeat(standart, RemainingDays).ToList());
注意:
我对这行counter.DayOfWeek == counter.DayOfWeek
没什么意思,我认为在这种情况下没有任何意义。