C# Methode für Schleife durch Liste generieren

Karbe

Rear Admiral
Registriert
Feb. 2008
Beiträge
5.399
Hallo,
ich tu mich gerade schwer aus einer Schleife durch eine Liste von Enum-Values eine generische Methode zu erstellen.

C#:
string result = String.Empty;
var values = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().ToList();
for (var i = 0; i < values.Count; i++)
{
    if (stringToSearch.Contains(values[i].ToString())) result = values[i].ToString();
}

Wer weiß Rat?
 
Wie man sieht möchte ich einen String auf einen Enum-Value (bzw. eine Liste von Enum-Values) prüfen, die Methode würde ich nun gerne generisch gestalten. Theoretisch reicht mir als Rückgabewert auch der Index.

Grüße
 
C#:
public int GetIndexOfEnumMember<MyEnumType>(string toSearchingEnumMemberName)
{
    return typeof(MyEnumtype)
                .GetMembers()
                .Select(t => t.Name)
                .ToList()
                .IndexOf(toSearchingEnumMemberName);
}
 
  • Gefällt mir
Reaktionen: Karbe
Du meinst sowas?

C#:
public static T EnumInString<T>(string stringToSearch) where T : Enum
{
    string result = String.Empty;
    foreach (T value in Enum.GetValues(typeof(T)))
    {
        if (stringToSearch.Contains(value.ToString())) result = value.ToString();
    }
    return result;
}
 
  • Gefällt mir
Reaktionen: Karbe
@AW4 ist mir zuvorgekommen :D Würde das foreach aber ggf. ersetzen, sofern man alle Enums haben will, die in dem Text vorkommen, und nicht nur den letzten:
return Enum.GetValues(typeof(T)).Where(e => stringToSearch.Contains(e.ToString())).Select(e => e.ToString());

Ggf. noch mit Errorhandling dazu, aber so als schnelle Inspiration sollte das genügen.
 
Der wird wohl damit meinen, dass er als Ergebnis etwas wie "xxx.MyEnum" bekommt statt z.B. MyEnum.EintragNr1;
 
Zurück
Oben