在下面的示例中,我想将以“APPLE”开头的flavor添加到表单上的ComboBox。当枚举具有唯一值时,它可以正常工作;但是,在我的示例中,两个枚举PINEAPPLE_PEACH和APPLE_ORANGE都具有值1,这会使结果混乱。
两个具有相同值的枚举是否错误,如果是这样,我如何更改代码以获得一致的结果?
public enum Flavour
{
APPLE_PEACH = 0,
PINEAPPLE_PEACH = 1,
APPLE_ORANGE = 1,
APPLE_BANANA = 3,
PINEAPPLE_GRAPE = 4
}
private void AddFlavours()
{
foreach (Flavour flavour in Enum.GetValues(typeof(Flavour)))
{
string flavourName = Enum.GetName(typeof(Flavour), flavour);
if (flavourName.StartsWith("APPLE"))
{
myComboBox.Items.Add(flavour);
}
}
}
答案 0 :(得分:1)
使用Linq,您可以使用:
foreach (string flavourName in Enum.GetNames(typeof(Flavour)).Where(s => s.StartsWith("APPLE")))
{
myComboBox.Items.Add(flavourName);
}
答案 1 :(得分:0)
您可以使用Enum.GetNames代替GetValues。它会是这样的(未经测试):
foreach (string flavourName in Enum.GetNames(typeof(Flavour)))
{
if (flavourName.StartsWith("APPLE"))
{
myComboBox.Items.Add(Enum.Parse(typeof(flavour), flavourName));
}
}