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是的。你可能可以改进它更重要的是,可能会使嵌套循环变平,但这是最简单也是最无争议的改进