web-dev-qa-db-fra.com

Comment obtenir un tableau de toutes les valeurs enum en C #?

J'ai un enum que je voudrais afficher toutes les valeurs possibles de. Existe-t-il un moyen d'obtenir un tableau ou une liste de toutes les valeurs possibles de l'énum au lieu de créer manuellement une telle liste? par exemple. Si j'ai un enum:

public enum Enumnum { TypeA, TypeB, TypeC, TypeD }

comment pourrais-je obtenir un List<Enumnum> qui contient { TypeA, TypeB, TypeC, TypeD }?

72
Mark LeMoine

Cela vous donne un tableau clair des valeurs enum en utilisant Enum.GetValues :

var valuesAsArray = Enum.GetValues(typeof(Enumnum));

Et cela vous donne une liste générique:

var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
135
Dirk Vollmar

Essayez ce code:

Enum.GetNames(typeof(Enumnum));

Ceci retourne un string[] avec tous les noms enum de l'énum choisi.

16
Øyvind Bråthen
Enum.GetValues(typeof(Enumnum));

renvoie un tableau des valeurs dans l'énumération.

6
duraz0rz

Quelque chose de peu différent:

typeof(SomeEnum).GetEnumValues();
3
Termininja

avec ça:

string[] myArray = Enum.GetNames(typeof(Enumnum));

et vous pouvez accéder au tableau de valeurs comme ceci:

Array myArray = Enum.GetValues(typeof(Enumnum));
2
Dr TJ

Vous voudrez peut-être faire comme ceci:

public enum Enumnum { 
            TypeA = 11,
            TypeB = 22,
            TypeC = 33,
            TypeD = 44
        }

Toutes les valeurs int de cette enum est 11,22,33,44.

Vous pouvez obtenir ces valeurs par ceci:

var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);

string.Join(",", enumsValues) est 11,22,33,44.

2
Ali Soltani

Vous pouvez utiliser

Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();

Cela retourne un tableau!

1
Mitchel Sellers

Si vous préférez une méthode plus générique, la voici. Vous pouvez ajouter plus de convertisseurs selon vos besoins.

    public static class EnumConverter
    {

        public static string[] ToNameArray<T>()
        {
            return Enum.GetNames(typeof(T)).ToArray();
        }

        public static Array ToValueArray<T>()
        {
            return Enum.GetValues(typeof(T));
        }

        public static List<T> ToListOfValues<T>()
        {
            return Enum.GetValues(typeof(T)).Cast<T>().ToList();
        }


        public static IEnumerable<T> ToEnumerable<T>()
        {
            return (T[])Enum.GetValues(typeof(T));
        }

    }

Exemples de mise en œuvre:

   string[] roles = EnumConverter.ToStringArray<ePermittedRoles>();
   List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>();
   Array data = EnumConverter.ToValueArray<ePermittedRoles>();
1
Ozesh

aussi vous pouvez utiliser

var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";

pour obtenir tous les éléments enum au format json.

0
ModernNet

Le PO a demandé Comment obtenir un tableau de toutes les valeurs enum en C #?

Et si vous voulez obtenir un tableau de valeurs enum sélectionnées en C #?

Votre Enum

    enum WeekDays 
    {
        Sunday, 
        Monday,
        Tuesday
    }

Si vous voulez simplement sélectionner Sunday dans votre Enum.

  WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };

  WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where
  (x => x == WeekDays.Sunday).ToArray();

Crédits vont au tl compétent.

Références:

1.

2.

Hope aide quelqu'un.

0
stom