Это может быть немного хакерским, но вы можете привести свойство .DayOfWeek к int (это enum и, поскольку его базовый тип данных не был изменен, по умолчанию используется int) и использовать его для определения предыдущего запуска недели.
Похоже, неделя, указанная в перечислении DayOfWeek, начинается в воскресенье, поэтому, если мы вычтем 1 из этого значения, оно будет равно числу дней, в которые понедельник находится перед текущей датой. Нам также нужно сопоставить воскресенье (0) равным 7, поэтому при 1 - 7 = -6 воскресенье сопоставится с предыдущим понедельником: -
DateTime now = DateTime.Now;
int dayOfWeek = (int)now.DayOfWeek;
dayOfWeek = dayOfWeek == 0 ? 7 : dayOfWeek;
DateTime startOfWeek = now.AddDays(1 - (int)now.DayOfWeek);
Код предыдущего воскресенья проще, так как нам не нужно выполнять эту настройку: -
DateTime now = DateTime.Now;
int dayOfWeek = (int)now.DayOfWeek;
DateTime startOfWeek = now.AddDays(-(int)now.DayOfWeek);