Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何在日期之间的一段时间内或循环中应用替代模式_C#_Asp.net_.net_Asp.net Core - Fatal编程技术网

C#如何在日期之间的一段时间内或循环中应用替代模式

C#如何在日期之间的一段时间内或循环中应用替代模式,c#,asp.net,.net,asp.net-core,C#,Asp.net,.net,Asp.net Core,我有一个从(开始日期)2021年3月1日到(结束日期)2021年3月22日的日期列表/数组 我想应用另一种模式,例如,如果是2/3模式,我将根据上述日期获得如下输出: 01-03-21-红色 02-03-21-红色 03-03-21-蓝色 04-02-21-蓝色 05-03-21-蓝色 06-03-21-红色 08-03-21-红色 09-03-21-蓝色 10-03-21-蓝色 11-03-21-蓝色 直到结束日期 你可以看到有一种模式 var start = new DateTime(2

我有一个从(开始日期)2021年3月1日到(结束日期)2021年3月22日的日期列表/数组

我想应用另一种模式,例如,如果是2/3模式,我将根据上述日期获得如下输出:

  • 01-03-21-红色
  • 02-03-21-红色
  • 03-03-21-蓝色
  • 04-02-21-蓝色
  • 05-03-21-蓝色
  • 06-03-21-红色
  • 08-03-21-红色
  • 09-03-21-蓝色
  • 10-03-21-蓝色
  • 11-03-21-蓝色
直到结束日期

你可以看到有一种模式

var start = new DateTime(2020, 3, 1);
var end = new DateTime(2020, 3, 22);

int reds = 2, blues = 3;  
DateTime currentDay = start;

while (currentDay <= end)
{

  // Console.WriteLine("***")
}
var start=newdatetime(2020,3,1);
var end=新日期时间(2020年3月22日);
红色整数=2,蓝色整数=3;
DateTime currentDay=开始;

而(currentDay如果您有一个每天递增的计数器,则可以使用mod运算符测试颜色:

        var i = 0;
        while (currentDay <= end)
        {

            // ....

            if (i % 5 < 2 )
            {
                Console.Out.WriteLine("Red");
            }
            else
            {
                Console.Out.WriteLine("Blue");
            }
            i++;

            // ......
        }
var i=0;

而(currentDay下面的代码创建了一个字典,将每个日期与其颜色关联起来

var colors = new [] { "Red", "Red", "Blue", "Blue", "Blue" };

var start = new DateTime(2020, 3, 1);
var end = new DateTime(2020, 3, 22);

var colorByDateTime = new Dictionary<DateTime, string>();

DateTime current = start;
int dateTimeIndex = 0;
while (current <= end)
{
    colorByDateTime.Add(current, colors[dateTimeIndex % colors.Length]);
    current = current.AddDays(1);
    dateTimeIndex++;
}
var colors=new[]{“红”、“红”、“蓝”、“蓝”、“蓝”};
var开始=新日期时间(2020年3月1日);
var end=新日期时间(2020年3月22日);
var colorByDateTime=新字典();
日期时间当前=开始;
int dateTimeIndex=0;
while(当前新的{dt,i})
.ToDictionary(e=>e.dt,e=>colors[e.i%colors.Length]);
应该产生相同的词典

.

即使对于日期,也可以使用“for”循环。我认为可读性会更好:-)
for(DateTime当前=开始;当前<结束;当前=当前。AddDays(1))
var colors = new [] { "Red", "Red", "Blue", "Blue", "Blue" };

Dictionary<DateTime, string> colorByDateTime = dateTimes
    .Select((dt, i) => new { dt, i })
    .ToDictionary(e => e.dt, e => colors[e.i % colors.Length]);