将枚举值转换为字符串数组

时间:2014-08-04 19:22:39

标签: c# linq enums

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));,但这也行不通。

有什么建议吗?

4 个答案:

答案 0 :(得分:21)

使用GetValues

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

Live demo

答案 1 :(得分:12)

Enum.GetNames怎么样?

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

试一试;)

答案 2 :(得分:7)

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

类似的东西:

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

Demo

答案 3 :(得分:3)

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

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