从枚举列表中删除下划线?

时间:2012-05-04 08:04:20

标签: c#

我在comboBox中使用包含国家/地区的枚举。所有枚举都在一个名为Countries的类中。其中一些有像United_States_of_America这样的下划线。我需要在comboBox中显示之前删除那些下划线吗?

我的想法是使用Replace("_", " "),如果它是一个普通的字符串,那么简单,但使用组合框不是那么简单!因此,我会提前帮助解决这个问题吗?谢谢!

private void InitializeGUI()
{
    // Fill comboBox with countries
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))); 
}

3 个答案:

答案 0 :(得分:4)

使用Linq的力量:)

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))
                                    .Select(c => c.Replace("_", " "));  
} 

或使用foreach:

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    string[] countryNames = Enum.GetNames(typeof(Countries));
    foreach (string countryName in countryNames)
    {
        cmbCountries.Items.Add(countryName.Replace("_", " "));
    }
} 

答案 1 :(得分:0)

private void InitializeGUI()
{
    // Fill comboBox with countries
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))
        .Select(c => c.Replace("_", " "))); 
}

这将创建一个IEnumerable<string>,其中包含您从Enum中选择的名称(做得好,与Enum合作对我来说似乎总是非常可怕)然后替换每个名称的下划线

您也可以将其写为:

countryNames = from country
               in Enum.GetNames(typeof(Countries))
               select country.Replace("_", " ");
cmbCountries.Items.AddRange(countryNames);

答案 2 :(得分:0)

Enum.GetNames(typeof(Countries)).Select(x => x.Replace("_", " "));