我有一个像这样的枚举:
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();
我知道那行不通。那么有没有更好的方法来获取以某个字符串开头的所有枚举值。
我知道我可能可以使用正则表达式来避免误报,但是,我现在保持简单。
谢谢。