私は次のような列挙型を持っています:
public enum Animals
{
CatOne = 12,
CatTwo = 13,
CatThree = 14,
DogOne = 21,
DogTwo = 22
};
偉大な。
今、私はすべての猫の値を取得したい..私がやろうとしていることはこれです:
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();
}
これは問題なく動作します。それが醜いことを除いて。なぜ私は次のようなことができないのですか
Animals
.Select(r => (int)r)
.Where(r => r.StartsWith("Cat"))
.ToArray();
私はそれがうまくいかないことを知っています。特定の文字列で始まる列挙型のすべての値を取得するより良い方法はありますか。
おそらく正規表現を使用して誤検出を回避できることはわかっていますが、今のところ単純にしています。
ありがとう。