Tengo una enumeración de la que me gustaría mostrar todos los valores posibles. ¿Hay alguna manera de obtener una matriz o lista de todos los valores posibles de la enumeración en lugar de crear manualmente dicha lista? por ejemplo, si tengo una enumeración:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
¿Cómo podría obtener un contenido List<Enumnum>
que contenga { TypeA, TypeB, TypeC, TypeD }
?
Respuestas:
Esto le da una matriz simple de los valores de enumeración usando
Enum.GetValues
:var valuesAsArray = Enum.GetValues(typeof(Enumnum));
Y esto te da una lista genérica:
var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
fuente
Enumnum.GetValues()
yEnumnum.GetNames()
no existe.var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
.Enum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
ActualType
significar? Para una enumeración, estaríaEnumnum
en el ejemplo del OP, o podría ser el tipo subyacente (generalmenteint
). ¿Tenías algo más en mente?Prueba este código:
Enum.GetNames(typeof(Enumnum));
Esto devuelve a
string[]
con todos los nombres de enumeración de la enumeración elegida.fuente
Enum.GetValues(typeof(Enumnum));
devuelve una matriz de los valores de Enum.
fuente
Es posible que desee hacer esto:
public enum Enumnum { TypeA = 11, TypeB = 22, TypeC = 33, TypeD = 44 }
Todos los valores int de esto
enum
son11,22,33,44
.Puede obtener estos valores de esta manera:
var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);
string.Join(",", enumsValues)
es11,22,33,44
.fuente
Algo un poco diferente:
typeof(SomeEnum).GetEnumValues();
fuente
con este:
string[] myArray = Enum.GetNames(typeof(Enumnum));
y puede acceder a la matriz de valores así:
Array myArray = Enum.GetValues(typeof(Enumnum));
fuente
Puedes usar
Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();
¡Esto devuelve una matriz!
fuente
Si prefiere una forma más genérica, aquí está. Puede agregar más convertidores según sus necesidades.
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)); } }
Implementaciones de muestra:
string[] roles = EnumConverter.ToStringArray<ePermittedRoles>(); List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>(); Array data = EnumConverter.ToValueArray<ePermittedRoles>();
fuente
también puedes usar
var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";
para obtener todos los elementos en enum como formato json.
fuente
El OP preguntó cómo obtener una matriz de todos los
enum
valores en C #?¿Qué sucede si desea obtener una matriz de
enum
valores seleccionados en C #?Tu enumeración
enum WeekDays { Sunday, Monday, Tuesday }
Si solo desea seleccionar
Sunday
de suEnum
.WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday }; WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where (x => x == WeekDays.Sunday).ToArray();
Los créditos van a tl con conocimientos.
Referencias:
1.
2.
La esperanza ayuda a alguien.
fuente