Преобразование значений enum в массив строк

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 ответов


использовать GetValues

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

Live demo


Enum.GetValues даст вам массив всех определенных значений Enum. Чтобы превратить их в числовые строки, вам нужно будет бросить в int а то ToString() их

что-то типа:

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

демо


насчет перечисления.Метод getnames?

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

попробуйте ;)


Я нашел это здесь - Как преобразовать перечисление в список в C#?, изменено для создания массива.

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