Это какой-то многословный код. Давайте посмотрим, смогу ли я немного уменьшить его / дать блок кода, который вы можете использовать для вдохновения (потому что это похоже на домашнюю работу)
public class Project{
public Guid ID { get; set;}
public DateTime Created{ get; set; }
}
public static class ProjectFactory{
private static Random _r = new Random();
public static Project CreateProject(){
DateTime midnightTomorrow = DateTime.Today.AddDays(1);
int secTilDayEnd = (int)(midnightTomorrow - DateTime.Now).TotalSeconds;
return new Project(){
ID = Guid.NewGuid(),
Created = DateTime.Now.AddSeconds(_r.Next(secTilDayEnd))
};
}
}
//and to use it
List<Project> p = new List<Project>(1000);
for(int i = 0; i < 1000; i++)
p.Add(ProjectFactory.CreateProject());
foreach(var x in p.OrderBy(proj => proj.Created))
Console.WriteLine($"Project {x.Id} created {x.Created:HH:mm}");
Давайте сохраним случайное время в datetime; мы всегда можем вычеркнуть время, если хотим только этого, но сохранение даты полезно сохранить. Это также означает, что мы можем просто использовать сравнение даты и времени по умолчанию, встроенное в c# - он знает, как упорядочивать даты
Я создал класс, у которого есть единственное задание для производства проектов с созданной датой некоторого времени между тем временем и конец дня. Это делается путем определения количества секунд до конца дня и добавления случайного числа этих секунд к текущему времени
А затем фрагмент кода для создания тысячи проектов, упорядочить их по дате и распечатайте их, показывая только время