Перетворити перерахунок у Список <string>


Відповіді:


177

Використовуйте Enumстатичний метод «s, GetNames. Він повертає string[], як-от так:

Enum.GetNames(typeof(DataSourceTypes))

Якщо ви хочете створити метод, який робить це лише для одного типу enum, а також перетворює цей масив в a List, ви можете написати щось подібне:

public List<string> GetDataSourceTypes()
{
    return Enum.GetNames(typeof(DataSourceTypes)).ToList();
}

Using System.Linq;Для використання .ToList () вам знадобиться у верхній частині свого класу


7
@DCShannon, будь ласка, не редагуйте популярні запитання / відповіді та зменшуйте пояснення. Хоча ми з вами розуміємо скорочений код, новачкові потрібні всі додаткові деталі, щоб пов’язати його зі своїм навчанням .
Джеремі Томпсон

Здається Enum.GetNames(typeof(DataSourceTypes))повернути загальний System.Arrayзамість рядкового масиву?
sookie

@sookie, див. посилання msdn, це підпис методу GetNames () :public static string[] GetNames
Джеремі Томпсон,

30

Я хочу додати ще одне рішення: У моєму випадку мені потрібно використовувати групу Enum у списку елементів списку, що випадає. Таким чином, у них може бути місця, тобто потрібні більш зручні описи:

  public enum CancelReasonsEnum
{
    [Description("In rush")]
    InRush,
    [Description("Need more coffee")]
    NeedMoreCoffee,
    [Description("Call me back in 5 minutes!")]
    In5Minutes
}

У класі помічників (HelperMethods) я створив наступний метод:

 public static List<string> GetListOfDescription<T>() where T : struct
    {
        Type t = typeof(T);
        return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
    }

Коли ви зателефонуєте цьому помічнику, ви отримаєте список описів предметів.

 List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();

ДОДАТОК: У будь-якому випадку, якщо ви хочете реалізувати цей метод, вам потрібно: Розширення GetDescription для перерахунку. Це те, що я використовую.

 public static string GetDescription(this Enum value)
    {
        Type type = value.GetType();
        string name = Enum.GetName(type, value);
        if (name != null)
        {
            FieldInfo field = type.GetField(name);
            if (field != null)
            {
                DescriptionAttribute attr =Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
                if (attr != null)
                {
                    return attr.Description;
                }
            }
        }
        return null;
        /* how to use
            MyEnum x = MyEnum.NeedMoreCoffee;
            string description = x.GetDescription();
        */

    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.