【问题标题】:Converting enum values into an string array将枚举值转换为字符串数组
【发布时间】:2014-09-27 08:37:18
【问题描述】:
public enum VehicleData
{
    Dodge = 15001,
    BMW = 15002,
    Toyota = 15003        
}

我想在字符串数组中获取高于 15001、15002、15003 的值,如下所示:

string[] arr = { "15001", "15002", "15003" };

我尝试了下面的命令,但它给了我名称而不是值的数组。

string[] aaa = (string[]) Enum.GetNames(typeof(VehicleData));

我也试过string[] aaa = (string[]) Enum.GetValues(typeof(VehicleData));,但也没有用。

有什么建议吗?

【问题讨论】:

标签: c# linq enums


【解决方案1】:

Enum.GetNames 呢?

string[] cars = System.Enum.GetNames( typeof( VehicleData ) );

试一试;)

【讨论】:

  • Enum.GetNames 返回字符串数组而不是单个字符串
  • System.Enum.GetNames 将根据要求提供名称而不是值作为 OP。
【解决方案2】:

我在这里找到了这个 - How do I convert an enum to a list in C#?,修改为数组。

Enum.GetValues(typeof(VehicleData))
.Cast<int>()
.Select(v => v.ToString())
.ToArray();

【讨论】:

    【解决方案3】:

    Enum.GetValues 将为您提供一个数组,其中包含您的Enum 的所有定义值。要将它们转换为数字字符串,您需要先转换为 int,然后再转换为 ToString()

    类似:

    var vals = Enum.GetValues(typeof(VehicleData))
        .Cast<int>()
        .Select(x => x.ToString())
        .ToArray();
    

    Demo

    【讨论】:

    • 您的演示似乎与您展示的示例不对应。
    【解决方案4】:

    使用GetValues

    Enum.GetValues(typeof(VehicleData))
        .Cast<int>()
        .Select(x => x.ToString())
        .ToArray();
    

    Live demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多