Код немного запутан, есть много строк, которые вообще ничего не делают.
Здесь я привожу пример кода, который, хотя и не совсем элегантный, предоставляет вам необходимое поведение, следующий код создаст список дней, которые повторяются каждые 2, 3, независимо от того, какие вам нужны недели, которые вы определяете в его зов.
Этот метод также принимает список DayOfWeek, для которого вы хотите создать повторение
private static void GetRecurrentDays(DateTime fromDate, DateTime untilDate, uint weeklyRecurrence, List<DayOfWeek> recurrenceDays)
{
var recurrenceDates = new List<DateTime>();
for (var dt = fromDate; dt < untilDate; dt = dt.AddDays(1))
{
if (recurrenceDays.Any(day => day.Equals(dt.DayOfWeek)))
{
var lastDate =
recurrenceDates
.LastOrDefault(date => date.DayOfWeek.Equals(dt.DayOfWeek));
// We multiply 7 days (a week) with weeklyRecurrence to
// calculate the appropiate date in which to add another day,
// calling with either 0 or 1 will calculate a weekly
// schedule
if (lastDate.Equals(DateTime.MinValue)
|| weeklyRecurrence.Equals(0)
|| ((dt - lastDate).Days % (7 * weeklyRecurrence)).Equals(0) )
{
recurrenceDates.Add(dt);
}
}
}
}
вы можете встроить этот код в свой код, чтобы получать дни с еженедельным повторением, а затем использовать их в своем коде