I\'m ordering a number of objects by their System.DayOfWeek property.
DayOfWeek treats Sunday as the start of the week, whereas I would like it to be ordered so
I use a solution based on current culture:
// all days of week
var daysOfWeek = Enum.GetValues(typeof(DayOfWeek)).Cast();
// get first day of week from current culture
var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
// all days of week ordered from first day of week
var daysOfWeekOrdered = daysOfWeek.OrderBy(x => (x - firstDayOfWeek + 7) % 7);
The important part is the OrderBy
lambda. It's basically a parametrized version of Jon's answer above.
This way it will be ordered from Monday in the UK, and from Sunday in the US.