我像这样遍历DayOfWeek枚举:

foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)))
{
 // Add stuff to a list
}

我的问题是我希望枚举在星期一而不是星期日开始。

我试着做:
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
ci.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Monday;

但是foreach循环仍然从星期日开始。

我怎样才能做到这一点 ?

我的最后一个想法是将结果列表重新排序为我想要的日期
但这意味着更多的迭代。

谢谢 !

最佳答案

这是不可能的,纯粹是因为设置区域性并不会改变DayOfWeek enum定义为这样的事实:

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

但是,您可以跳过第一个条目,以后再添加它。
foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))
                              .OfType<DayOfWeek>()
                              .ToList()
                              .Skip(1)) {
    list.Add(day.ToString());
}
list.Add(DayOfWeek.Sunday.ToString());

关于c# - 对于通过DayOfWeek枚举从星期一开始的每个循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17366379/

10-11 13:05