2016-08-05 33 views
0

Ich versuche festzustellen, ob ein in einer Datei in einer Enum in meinem Code einlesener Zeichenfolgewert gefunden wird.Vergleichen eines Zeichenfolgenwerts mit ALLEN Werten in einer Enum in C# mithilfe von TryParse - Logic Problem

ENUM:

internal enum Difficulty { None, Easy, Medium, Hard } 

An diesem Punkt in meinem Code header[i] = "EASY". Ich möchte diesen Wert mit einem der Werte in meiner Difficulty enum vergleichen, aber ich stoße auf Probleme.

Der Code:

Jedes Mal, wenn der folgende Code ausgeführt wird, gibt die if-Anweisung falsch, weil "Easy" != "EASY".

Difficulty dif = Difficulty.None; 
if (Difficulty.TryParse(header[i], out dif)) {  // RETURNS FALSE 
    MyLog.Write("It's in the Enum!"); 
} 

Ich habe versucht, den header[i] Wert auf den Difficulty Wert in der Anweisung TryParse vergleichen, aber es führt zu einem Compiler-Fehler.

Gibt es etwas, was ich tun kann, außer alle Werte von Difficulty in Großbuchstaben zu ändern?

+0

Bitte fügen Sie keine Antworten auf die Frage in der Frage selbst. Wenn Sie eine Lösung gefunden haben, markieren Sie eine der Antworten als richtig oder fügen Sie selbst eine Antwort hinzu. – progyammer

+1

@progy_rock Meine Entschuldigung, ich hatte vergessen. Ich fügte nur die Lösung meiner Frage für die einfache Zugänglichkeit für jeden hinzu, der das später liest – TheAuzzieJesus

Antwort

1

Der .ToString Wert für jede Enum gibt nur den Namen zurück, den Sie dafür bereitstellen. Also, wenn Sie werde dies i in einer Schleife tun schlage vor, alle Namen zu einer lokalen Liste und suchen in dem, was zu einer besseren Leistung führen würde:

string[] enumNames = Enum.GetNames(typeof(Difficulty)); 

bool found = enumNames.Any(x => x.Equals(header[i], StringComparison.OrdinalIgnoreCase));