OrderBy sur Enum.GetValues ()
Je suis remplissage d'une DropDownList
MVC 4 à partir d'un enum
et je veux commander enum valeurs de la plus grande à la plus petite. Cependant, il ne semble pas être un moyen direct de l'approche de ce. Actuellement, je suis en utilisant ce code pour l'ajouter au dictionnaire avec à la clé l'ID et la valeur en cours de l'affichage de texte:
var priorities = Enum.GetValues(typeof(Models.Priority)).OfType<Models.Priority>().ToList();
for (int i = priorities.Count - 1; i >= 0; i--)
{
Models.Priority priority = priorities[i];
prioritiesDictionary.Add((int)priority, "Priority " + ((int)priority).ToString());
}
Je ne crois pas que le fait de mettre les valeurs de l'enum dans une liste et d'en boucle vers l'arrière est la méthode la plus efficace. Il y a seulement quatre valeurs de l'enum, mais est-il une meilleure façon d'effectuer une OrderBy
opération sur ce qui est retourné à partir de Enum.GetValues
? Je sais que ça peut être impact minimal sur les performances de le faire comme je le suis, mais je veux savoir pour les plus grands enums.
source d'informationauteur Cameron Tinker
Vous devez vous connecter pour publier un commentaire.
Sons comme vous voulez juste:
Ou pour éviter de tout comme de nombreux supports:
Il n'est pas clair comment votre code actuel est de vous aider, en vous donnant un dictionnaire, mais le ci-dessus va certainement vous donner une séquence de valeurs enum, triés du plus haut au plus bas. Vous n'avez pas besoin de jeter à
int
parce que les valeurs de l'enum de même type sont déjà comparables les uns aux autres.Si vous avez besoin d'une liste, il suffit d'appeler
ToList()
après laOrderByDescending
appel.Quoi à ce sujet:
Ne pas utiliser
OfType
parce que silencieusement jette non-correspondance des éléments. Il est presque toujours une erreur.Basé sur la ci-dessus, j'ai créer une réutilisables fonction...