从自定义开始IComparer<DayOfWeek>
:
public class DayOfWeekComparer : IComparer<DayOfWeek> {
public int Compare(DayOfWeek x, DayOfWeek y) {
return ModifyDayOfWeek(x).CompareTo(ModifyDayOfWeek(y));
}
private static int ModifyDayOfWeek(DayOfWeek x) {
// redefine Sunday so it appears at the end of the ordering
return x == DayOfWeek.Sunday ? 7 : (int)x;
}
}
然后:
foreach(DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))
.OfType<DayOfWeek>()
.OrderBy(x => x, new DayOfWeekComparer())) {
// will see Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
编辑添加:
实际上,即使那样也太复杂了,尽管它很漂亮。你为什么不把
static IEnumerable<DayOfWeek> DaysOfWeek {
get {
yield return DayOfWeek.Monday;
yield return DayOfWeek.Tuesday;
yield return DayOfWeek.Wednesday;
yield return DayOfWeek.Thursday;
yield return DayOfWeek.Friday;
yield return DayOfWeek.Saturday;
yield return DayOfWeek.Sunday;
}
}
在某个地方,任何地方,然后就完成它!亲!