Eine alternative Methode, die möglicherweise wiederverwendbar ist, besteht darin, eine Erweiterungsmethode für DateTime zu schreiben und ein IEnumerable zurückzugeben.
Zum Beispiel können Sie eine Klasse definieren:
public static class MyExtensions
{
public static IEnumerable EachDay(this DateTime start, DateTime end)
{
// Remove time info from start date (we only care about day).
DateTime currentDay = new DateTime(start.Year, start.Month, start.Day);
while (currentDay <= end)
{
yield return currentDay;
currentDay = currentDay.AddDays(1);
}
}
}
Jetzt im rufenden Code können Sie Folgendes tun:
DateTime start = DateTime.Now;
DateTime end = start.AddDays(20);
foreach (var day in start.EachDay(end))
{
...
}
Ein weiterer Vorteil dieses Ansatzes besteht darin, dass sie es trivial macht Fügen Sie EachWeek, EachMonth usw. hinzu. Diese sind dann alle auf DateTime verfügbar.
Werfen Sie einen Blick hier: http://StackOverflow.com/Questions/533767/how-do-you-iterate-through-every-day-of-the-year –