如何将列表安排到预构建的模板?(控制台)
本文关键字:控制台 构建 列表 | 更新日期: 2023-09-27 18:18:08
我有一个通用的名称列表,其数量取决于用户选择的内容。我想把这些名字排列在用户之前输入的时间范围内。例如:我们有3个名字,用户输入08:00-17:00。从08:00-17:00我们有9小时-> 9/3=3,所以把名字安排在一个3小时的模板中。
代码中是这样的:
List<string> myList = new List<string>();
myList.Add(Name1);
myList.Add(Name2);
myList.Add(Name3);
Console.WriteLine("Enter hours range: ");
Console.ReadLine(); //in this case the user input is 08:00-17:00
if (myList.Count == 3)
{
Console.WriteLine("8-11 " + myList.ElementAt(0)); //Name1
Console.WriteLine("11-14 " + myList.ElementAt(1)); //Name2
Console.WriteLine("14-17 " + myList.ElementAt(2)); //Name3
}
问题来了,当有超过3个名字和时间减半(假设17:30)。
对如何做这种事情有什么想法吗?
你可以这样做
private static void CalculateTimeIntervals()
{
var startTime = new DateTime(2014, 8, 15, 8, 0, 0);
var endTime = new DateTime(2014, 8, 15, 17, 0, 0);
var lengthOfTime = endTime - startTime;
var numberOfPeople = 4;
var dividedLengthOfTime = lengthOfTime.Ticks / numberOfPeople;
var people = new List<Person>();
for (int i = 1; i <= numberOfPeople; i++)
{
people.Add(
new Person
{
Id = i,
StartTime = startTime.AddTicks((dividedLengthOfTime * i) - dividedLengthOfTime),
EndTime = startTime.AddTicks(dividedLengthOfTime * i)
});
}
}
Person看起来像
public class Person
{
public int Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}