variable - foreach syntax in c# net




pour chaque jour du mois (4)

Essayez d'utiliser une boucle for à la place.

for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
{
  DateTime dt = new DateTime(year, month, i);
}

Dupliquer possible:
Comment faire une boucle dans une plage de dates?

Y at-il un moyen de faire une boucle foreach pour chaque jour dans un mois spécifique?

penser à quelque chose comme

foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}

Vous pouvez écrire une méthode d'aide assez facilement:

public static IEnumerable<DateTime> AllDatesInMonth(int year, int month)
{
    int days = DateTime.DaysInMonth(year, month);
    for (int day = 1; day <= days; day++)
    {
         yield return new DateTime(year, month, day);
    }
}

Alors appelez avec:

foreach (DateTime date in AllDatesInMonth(2012, 1))

C'est probablement exagéré pour quelque chose que vous ne faites qu'une fois , mais c'est beaucoup plus agréable que d'utiliser une boucle for ou quelque chose de similaire si vous le faites beaucoup. Il fait dire à votre code ce que vous voulez accomplir, plutôt que la mécanique de la façon dont vous le faites.


Il est assez facile de générer une énumération de jours. Voici une façon de le faire

Enumerable.Range(1, DateTime.DaysInMonth(year, month)).Select(day =>
    new DateTime(year, month, day))

Vous pouvez utiliser Range:

Enumerable
    .Range(1, DateTime.DayInMonth(2012, 1)
    .Select(i => new DateTime(2012, 1, i)))
    .ToList() // ForEach is not a Linq to Sql method (thanks @Markus Jarderot)
    .ForEach(day => Console.Write(day));




foreach