Die Auswahl enum-Werte basierend auf den Schlüssel-Namen

Ich habe eine enum die ungefähr so:

public enum Animals 
{ 
    CatOne = 12, 
    CatTwo = 13, 
    CatThree = 14, 
    DogOne = 21, 
    DogTwo = 22 
};

Toll.

Nun möchte ich, um die Werte aller Katzen.. Was ich versuche zu tun, ist dies:

public static int[] GetCatValues()
{

    List<int> catValues = new List<int>();

    foreach(var cat in Enum.GetNames(typeof(Animals)))
    {
        Animals animal;

        if(cat.StartsWith("Cat"))
        {
            Enum.TryParse(cat, out animal);
            catValues.Add((int)animal);
        }       
    }

    return catValues.ToArray();
}

Das funktioniert, okay. Außer dass es hässlich aussieht. Warum kann ich nicht etwas tun, wie

Animals
    .Select(r => (int)r)
    .Where(r => r.StartsWith("Cat"))
    .ToArray();

Ich weiß, dass funktioniert nicht. So gibt es einen besseren Weg, um alle Werte des enum beginnt damit, dass sich bestimmte Zeichenfolge.

Ich weiß, ich könnte wahrscheinlich mit regex, Fehlalarme zu vermeiden, aber ich bin es einfach zu halten, für jetzt.

Dank.

r.ToString().StartsWith("Katze"))
Warum sind Sie versuchen, den Wert aller Hunde durch die Suche für die Einträge, die beginnen mit cat?
warum würden Sie wollen, verwenden Sie die RegEx-Sie können dies erreichen, mit Linq
oops, ich war der Bau die Frage, wie ich tippte, es ist also eine brin-fo (ähnlich Tippfehler, aber mit einem Fehltritt in meinem Gehirn)
Kann Ich? Ich wusste nicht, dass dies ist, was ich versuche zu finden Sie hier!

InformationsquelleAutor LocustHorde | 2013-03-12

Schreibe einen Kommentar