Освоение списков выбора перечислений в .NET Core: подробное руководство

Перечисления — это мощная функция.NET Core, позволяющая разработчикам определять набор именованных констант. Когда дело доходит до работы с перечислениями в веб-приложениях, одной из распространенных задач является заполнение раскрывающегося списка (списка выбора) значениями перечисления. В этой статье блога мы рассмотрим различные способы достижения этой цели в разговорной форме, приведя попутно примеры кода.

Метод 1: использование цикла foreach
Один из простых подходов — перебирать значения перечисления с помощью цикла foreach и создавать SelectList с объектами SelectListItem. Вот пример:

var selectList = new SelectList(Enum.GetValues(typeof(MyEnum)).OfType<MyEnum>()
    .Select(e => new SelectListItem
    {
        Text = e.ToString(),
        Value = e.ToString()
    }));

Метод 2: использование LINQ
LINQ (Language Integrated Query) обеспечивает краткий способ создания списка выбора. Этот метод включает использование метода Enum.GetValues, за которым следует запрос LINQ для создания списка выбора:

var selectList = Enum.GetValues(typeof(MyEnum)).OfType<MyEnum>()
    .Select(e => new SelectListItem
    {
        Text = e.ToString(),
        Value = e.ToString()
    }).ToList();

Метод 3: Метод расширения
Вы можете создать метод расширения, чтобы сделать процесс создания списков выбора более удобным для повторного использования и чтения. Вот пример:

public static class EnumExtensions
{
    public static SelectList ToSelectList<TEnum>(this TEnum enumObj) where TEnum : struct, Enum
    {
        var selectList = new SelectList(Enum.GetValues(enumObj.GetType()).OfType<TEnum>()
            .Select(e => new SelectListItem
            {
                Text = e.ToString(),
                Value = e.ToString()
            }));

        return selectList;
    }
}
// Usage:
var selectList = MyEnum.SomeValue.ToSelectList();

Метод 4: Вспомогательный класс Enum
Другой подход заключается в создании вспомогательного класса, содержащего методы, специально предназначенные для работы с перечислениями. Этот класс может включать метод для создания списка выбора:

public static class EnumHelper
{
    public static SelectList GetEnumSelectList<TEnum>() where TEnum : Enum
    {
        var selectList = new SelectList(Enum.GetValues(typeof(TEnum)).OfType<TEnum>()
            .Select(e => new SelectListItem
            {
                Text = e.ToString(),
                Value = e.ToString()
            }));

        return selectList;
    }
}
// Usage:
var selectList = EnumHelper.GetEnumSelectList<MyEnum>();

В этой статье мы рассмотрели несколько методов создания списков выбора перечисления в.NET Core. Предпочитаете ли вы простой цикл foreach, мощь LINQ, методы расширения или специальный вспомогательный класс перечисления, теперь у вас есть ряд вариантов на выбор. Не стесняйтесь экспериментировать с этими методами и найдите тот, который соответствует вашему стилю программирования и требованиям проекта.