C# 如何将不同数量的客户机与日期一起添加到列表中,持续30天,每个日期有两个不同的客户机,而无需重复代码?

C# 如何将不同数量的客户机与日期一起添加到列表中,持续30天,每个日期有两个不同的客户机,而无需重复代码?,c#,list,for-loop,if-statement,C#,List,For Loop,If Statement,我有这样一个代码: const int IterationsPerDay = 2; DateTimeOffset currentDate = DateTime.Now.Date; int offset = 0; for (int i = 0; i < 30; i += IterationsPerDay) { for (int j = 0; j < IterationsPerDay; j++) { int iterationIndex = i + j;

我有这样一个代码:

const int IterationsPerDay = 2;
DateTimeOffset currentDate = DateTime.Now.Date;
int offset = 0;
for (int i = 0; i < 30; i += IterationsPerDay)
{
    for (int j = 0; j < IterationsPerDay; j++)
    {
        int iterationIndex = i + j;
            if (iterationIndex < clientsList.Count)
            {
                Client _client = new Client();
        _client.Name = clientsList[iterationIndex].ClientName;
        _client.Date = currentDate.AddDays(offset);
        DatingList.Add(_client);
            } else
            if (iterationIndex >= clientsList.Count && iterationIndex < 2 * clientsList.Count)
            {
                Client _client = new Client();
        _client.Name = clientsList[iterationIndex - clientsList.Count].ClientName;
        _client.Date = currentDate.AddDays(offset);
        DatingList.Add(_client);
            } else
    if (iterationIndex >= 2 * clientsList.Count && iterationIndex < 3 * clientsList.Count)
    {
        Client _client = new Client();
        _client.Name = clientsList[iterationIndex - (2 * clientsList.Count)].ClientName;
        _client.Date = currentDate.AddDays(offset);
        DatingList.Add(_client);
    } else
    if (...)
    { 
        (...)
    } else
    if (iterationIndex >= 29 * clientList.Count && iterationIndex < 30 * clientsList.Count)
    {
        Client _client = new Client();
        _client.name = clientsList[iterationIndex - (29 * clientsList.Count)].ClientName;
        _client.Date = currentDate.AddDays(offset);
        DatingList.Add(_client);
    }
    offset += 1; 
}
const int IterationsPerDay=2;
DateTimeOffset currentDate=DateTime.Now.Date;
整数偏移=0;
对于(int i=0;i<30;i+=每天迭代次数)
{
对于(int j=0;j=clientsList.Count&&iterationIndex<2*clientsList.Count)
{
客户端_Client=新客户端();
_client.Name=clientsList[iterationIndex-clientsList.Count].ClientName;
_client.Date=currentDate.AddDays(抵销);
添加(_客户端);
}否则
if(iterationIndex>=2*clientsList.Count&&iterationIndex<3*clientsList.Count)
{
客户端_Client=新客户端();
_client.Name=clientsList[iterationIndex-(2*clientsList.Count)].ClientName;
_client.Date=currentDate.AddDays(抵销);
添加(_客户端);
}否则
如果(…)
{ 
(...)
}否则
if(iterationIndex>=29*clientList.Count&&iterationIndex<30*clientsList.Count)
{
客户端_Client=新客户端();
_client.name=clientsList[iterationIndex-(29*clientsList.Count)].ClientName;
_client.Date=currentDate.AddDays(抵销);
添加(_客户端);
}
偏移量+=1;
}
是否有更好的方法(代码也更短)继续将
\u client
添加到
日期列表中,直到总共达到30个日期

如你所见,我有

30如果/其他声明

确保增加30天(以防只有1个客户)

_客户编号不是固定的

每个日期有2个不同的客户机


(唯一的例外是
\u client.count=1
,此时
日期列表将为每个日期获取两次相同的客户端)。

当然。将重复的代码提取到帮助程序中

Client CreateClient(int index, int offset) => new Client
{
    Name = clientsList[index].ClientName,
    Date = currentDate + TimeSpan.FromDays(offset) // prefer operators where available
};

然后称之为

但是索引每次都在变化,你注意到了吗?这就是我传递它的原因。但是你注意到了吗?索引的变化不一样吗?我对每个if-else进行不同的计算。如果我保留所有if-else语句来更改索引,只需从内部调用助手即可。@positiveperspective是的。你可能可以改进它更重要的是,可能会使嵌套循环变平,但这是最简单也是最无争议的改进