当索引数小于7时添加空索引

问题描述 投票:-1回答:1

我有两个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);
        }
c# wpf list
1个回答
0
投票

您可以计算出要添加到列表中才能达到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没什么意思,我认为在这种情况下没有任何意义。

© www.soinside.com 2019 - 2024. All rights reserved.