【问题标题】:Convert Enum to List [duplicate]将枚举转换为列表 [重复]
【发布时间】:2013-06-11 23:48:23
【问题描述】:

假设我有以下枚举值

enum Language
    {
       CSharp= 0,
        Java = 1,
        VB = 2

    }

我想将它们转换为值列表(即){ CSharp,Java,VB}.

如何将它们转换为值列表?

【问题讨论】:

标签: c# list enums type-conversion


【解决方案1】:

如果您想将列表中的枚举元素存储为语言类型:

Enum.GetValues(typeof(Language)).Cast<Language>().ToList();

如果您想将它们存储为字符串:

Enum.GetValues(typeof(Language)).Cast<Language>().Select(x => x.ToString()).ToList();

【讨论】:

    【解决方案2】:
    Language[] result = (Language[])Enum.GetValues(typeof(Language))
    

    如果你想要一个枚举列表,你会得到你的值。

    如果您想要名称列表,请使用:

    string[] names = Enum.GetNames(typeof(Languages));
    

    【讨论】:

      【解决方案3】:

      您可以使用此代码

        static void Main(string[] args)
        {
         enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri };
      
          Array arr = Enum.GetValues(typeof(Days));
          List<string> lstDays = new List<string>(arr.Length);
          for (int i = 0; i < arr.Length; i++)
          {
              lstDays.Add(arr.GetValue(i).ToString());
          }
        }
      

      【讨论】:

      • 这太复杂了。
      【解决方案4】:

      如果我正确理解您的要求,您正在寻找这样的东西

      var enumList = Enum.GetValues(typeof(Language)).OfType<Language>().ToList();
      

      【讨论】:

      • 为什么OfType&lt;Language&gt;().ToList() 可以直接转换为Languages[]
      • @newStackExchangeInstance 是的,你是对的
      猜你喜欢
      • 2015-06-22
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多