Pour chaque boucle via DayOfWeek enum pour commencer le lundi?
Je suis une itération à travers le DayOfWeek Enum comme ceci :
foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)))
{
//Add stuff to a list
}
Et mon problème est que je voudrais que mon enum pour commencer le lundi au lieu de dimanche.
J'ai essayé de faire :
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
ci.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Monday;
Mais la boucle foreach encore commencé le dimanche.
Comment puis-je faire cela ?
Ma dernière idée serait de réorganiser ma liste qui s'affiche à l'ordre du jour, je veux
mais que signifierait plus d'itérations.
Merci !
source d'informationauteur Oliver | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible, simplement parce que le réglage de la culture ne change pas le fait que le
DayOfWeek
enum
est définie comme suit:Cependant, vous pouvez sauter la première entrée et l'ajouter plus tard.. peut-être comme ceci:
Un seul appel à
OrderBy
pouvez commander comme souhaité. Il n'est pas possible de changer l'ordre de l'appel àEnum.GetValues
.Utiliser un pour boucle et le modulo (%) opérateur :
Si vous souhaitez utiliser cette boucle de déplacer un autre enum, vous pouvez toujours remplacer le numéro 7 avec une variable initialisée comme ceci :
Vous pouvez même écrire une méthode pour se décale enum, en supposant que cette enum a toutes les valeurs entre 0, 1, ..., n :
Commencer avec un custom
IComparer<DayOfWeek>
:Alors:
Modifier pour ajouter:
En fait, même que est trop compliqué, jolie comme elle est. Pourquoi ne pas simplement mettre
quelque part, n'importe où, et de le faire juste avec elle! KISS!
Enum.GetValues renvoie les éléments qui sont triés par les valeurs binaires de l'énumération des constantes (voir Remarques sur MSDN).
DayOfWeek
énumération définie de cette manière:Comme vous pouvez le voir,
Monday
défini comme1
etSunday
défini comme0
. Donc, vous ne pouvez pas forcerEnum.GetValues
méthode pour retournerMonday
avantSunday
.