关于C#:将枚举值转换为字符串数组

Converting enum values into an string array

1
2
3
4
5
6
public enum VehicleData
{
    Dodge = 15001,
    BMW = 15002,
    Toyota = 15003        
}

我想在字符串数组中得到大于15001、15002、15003的值,如下所示:

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

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

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

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

有什么建议吗?


使用GET值

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

现场演示


那么Enum.GetNames呢?

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

试试看;)


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

类似:

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

演示


我在这里找到了这个-如何在C中将枚举转换为列表?,修改为生成数组。

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