如何将一些枚举值添加到组合框中

时间:2009-11-20 08:32:48

标签: c# enums

在下面的示例中,我想将以“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);
            }
        }
    }

2 个答案:

答案 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));
     }
 }