En mi cadena de consulta, tengo una variable de edad ?age=New_Born
.
¿Hay alguna manera de verificar si este valor de cadena New_Born
está en mi lista Enum?
[Flags]
public enum Age
{
New_Born = 1,
Toddler = 2,
Preschool = 4,
Kindergarten = 8
}
Podría usar la declaración if por ahora, pero si mi lista Enum aumenta. Quiero encontrar una mejor manera de hacerlo. Estoy pensando en usar Linq, pero no estoy seguro de cómo hacerlo.
Enum.IsDefined
¿no está bien?Respuestas:
Puedes usar:
fuente
Enum.IsDefined()
mayúsculas y minúsculas! Entonces esa no es una "solución universal".Puede utilizar el método Enum.TryParse:
fuente
Puede usar el método TryParse que devuelve verdadero si tiene éxito:
fuente
Tengo un método de extensión útil que usa TryParse, ya que IsDefined distingue entre mayúsculas y minúsculas.
fuente
Deberías usar Enum.TryParse para lograr tu objetivo
Este es un ejemplo:
fuente
Sé que este es un hilo antiguo, pero aquí hay un enfoque ligeramente diferente que usa atributos en Enumerates y luego una clase auxiliar para encontrar la enumeración que coincide.
De esta manera, podría tener múltiples asignaciones en una sola enumeración.
Con mi clase de ayudante como esta
entonces puedes hacer algo como
Y para completar, aquí está el atributo:
fuente
Para analizar la edad:
Para ver si está definido:
Dependiendo de cómo planee usar la
Age
enumeración, las banderas pueden no ser lo correcto. Como probablemente sepa,[Flags]
indica que desea permitir múltiples valores (como en una máscara de bits).IsDefined
devolverá falsoAge.Toddler | Age.Preschool
porque tiene varios valores.fuente