For each loop through DayOfWeek enum to start on Monday?

c#, dayofweek, enums

Solution

That isn't possible, purely because setting the culture doesn't change the fact that the `DayOfWeek` `enum` is defined as such:

public enum DayOfWeek {
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
}

You can, however, skip the first entry and add it later.. perhaps like this:

foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))
                              .OfType<DayOfWeek>()
                              .ToList()
                              .Skip(1)) {
    list.Add(day.ToString());
}
list.Add(DayOfWeek.Sunday.ToString());

Problem

I am iterating through the DayOfWeek Enum like this : ``` foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))) { // Add stuff to a list } ``` And my problem is that I would like my enum to start by Monday instead of Sunday. I tried to do : ``` CultureInfo ci = Thread.CurrentThread.CurrentCulture; ci.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Monday; ``` But the foreach loop still started with Sunday. How can I do this ? My last idea would be to reorder my resulting list to the order of day I want but that would mean more iterations. Thanks !

Original source