Wie überprüft man, ob der String-Wert in der Enum-Liste ist?
In meinem query-string, ich habe ein Alter variable ?age=New_Born
.
Gibt es eine Möglichkeit kann ich überprüfen, ob der string-Wert New_Born
ist in meinen Enum-Liste
[Flags]
public enum Age
{
New_Born = 1,
Toddler = 2,
Preschool = 4,
Kindergarten = 8
}
Könnte ich mit if-Anweisung für jetzt, aber wenn meine Enum-Liste wird immer größer. Ich will einen besseren Weg finden, es zu tun. Ich denke über die Verwendung von Linq, nur nicht sicher, wie es zu tun.
Kommentar zu dem Problem
- Enum.IsDefined
nicht ok? Vielleicht möchten Sie zu akzeptieren, einige Antworten.
InformationsquelleAutor der Frage qinking126 | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
InformationsquelleAutor der Antwort AaronS
Können Sie die Enum.TryParse-Methode:
InformationsquelleAutor der Antwort John Koerner
Können Sie die TryParse Methode, die true zurückgibt, wenn es erfolgreich:
InformationsquelleAutor der Antwort Omar Mahili
Ich weiß, dies ist ein Alter thread, aber hier ist ein etwas anderer Ansatz, mit Attributen auf, die Auflistet, und dann eine helper-Klasse zu finden, die auflisten, übereinstimmt.
Diese Weise können Sie mehrere Zuordnungen über eine einzelne aufzählen.
Mit meinem helper class wie diese
können Sie dann etwas wie das
Und der Vollständigkeit halber ist hier das Attribut:
InformationsquelleAutor der Antwort jwsadler
Sollten Sie Enum verwenden.TryParse zu erreichen Ihrer Ziel
Dies ist ein Beispiel:
InformationsquelleAutor der Antwort Viacheslav Smityukh
Analysieren Alter:
Um zu sehen, ob es definiert ist:
Je nachdem, wie Sie planen, verwenden Sie die
Age
enum, flags kann nicht das richtige sein. Wie Sie wahrscheinlich wissen,[Flags]
zeigt Sie zulassen möchten, dass mehrere Werte (in einer bit-Maske).IsDefined
wird false zurückgebenAge.Toddler | Age.Preschool
weil es mehrere Werte.InformationsquelleAutor der Antwort agent-j
Habe ich eine praktische Erweiterung Methode, die verwendet TryParse, als IsDefined ist case-sensitive.
InformationsquelleAutor der Antwort Andy