Hold on and stop thinking about user interface!
Start thinking about classes (objects)... Let say you have a list of lessons (
List<Lesson>
). Every
Lesson
object (class) has its own properties, such as:
Name
,
Description
,
StartTime
:
public class Lesson
{
private string sName = string.Empty;
private string sDescription = string.Empty;
private DateTime dStartTime = DateTime.MinValue;
public Lesson(string _Name, string _Description, DateTime _StartTime)
{
sName = _Name;
sDescription = _Description;
dStartTime = _StartTime;
}
public string Name
{
get => sName;
set => sName = value;
}
public string Description
{
get => sDescription;
set => sDescription = value;
}
public DateTime StartTime
{
get => dStartTime;
set => dStartTime = value;
}
public DateTime EndTime
{
get => dStartTime.AddMinutes(45);
}
}
Assuming that
StartTime
is properly set, you can find all lessons in every day of month based on that property. See:
List<Lesson> mondaylessons = alllessons.Where(x=> x.StartTime.DayOfWeek == DayOfWeek.Monday).ToList();
Code sample:
List<Lesson> alllessons = new List<Lesson>();
for(int i = 0; i<9; i++)
{
DateTime startDateTime = new DateTime(2021, 1, 2 + i, 8, 0, 0);
int[] cnt = {3, 5};
int c = i % 2 == 0 ? 0 : 1;
DateTime lessonStart = startDateTime;
for(int j = 0; j<cnt[c]; j++)
{
Lesson l = new Lesson(new string((char)(65+j), 5), $"description{j}", lessonStart);
alllessons.Add(l);
lessonStart = l.EndTime.AddMinutes(10);
}
}
List<Lesson> mondaylessons = alllessons.Where(x=> x.StartTime.DayOfWeek == DayOfWeek.Monday).ToList();
foreach(Lesson l in mondaylessons)
Console.WriteLine($"{l.Name} {l.Description} {l.StartTime.ToString("HH:mm")} {l.EndTime.ToString("HH:mm")}");
Result:
AAAAA description0 08:00 08:45
BBBBB description1 08:55 09:40
CCCCC description2 09:50 10:35