【发布时间】:2013-03-12 15:31:53
【问题描述】:
我有一个像这样的枚举:
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();
我知道那行不通。那么有没有更好的方法来获取以某个字符串开头的所有枚举值。
我知道我可能会使用正则表达式来避免误报,但是,我现在保持简单。
谢谢。
【问题讨论】:
-
r.ToString().StartsWith("Cat"))
-
你为什么要通过寻找以
cat开头的条目来获取所有狗的价值? -
为什么要使用正则表达式,您可以使用
Linq -
@MattBurland,哎呀,我在输入问题时正在构建问题,所以它是一个 brin-fo(类似于错字,但我的大脑有误)
-
@DJKRAZE 我可以吗?我不知道,这就是我想在这里找到的!