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();ActualTypesignificar? Para una enumeración, estaríaEnumnumen 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
enumson11,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
enumvalores en C #?¿Qué sucede si desea obtener una matriz de
enumvalores seleccionados en C #?Tu enumeración
enum WeekDays { Sunday, Monday, Tuesday }Si solo desea seleccionar
Sundayde 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