In this post, I will explain how to convert an enum to a list in C#.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace EnumProject
{
    class Program
    {
        static List<EnumDto> list = new List<EnumDto>();

        static void Main(string[] args)
        {
            foreach (var item in Enum.GetValues(typeof(Unvan)))
            {
                list.Add(new EnumDto()
                {
                    Id = Convert.ToInt32(Convert.ChangeType(item, typeof(Int32)).ToString()),
                    Text = GetDisplayName((Enum)item)
                });
            }
        }

        public static String GetDisplayName(Enum t)
        {
            FieldInfo fi = t.GetType().GetField(t.ToString());

            DisplayAttribute[] attributes = (DisplayAttribute[])fi.GetCustomAttributes(typeof(DisplayAttribute), false);

            if (attributes != null && attributes.Length > 0)
                return attributes[0].Name;
            else
                return t.ToString();
        }
    }

    class EnumDto
    {
        public int Id { get; set; }

        public String Text { get; set; }
    }
}



namespace EnumProject
{
    [DataContract]
    public enum Unvan
    {
        [Display(Name = "Memur")]
        [EnumMember]
        Memur = 1,

        [Display(Name = "Tekniker")]
        [EnumMember]
        Tekniker = 2,

        [Display(Name = "Mühendis")]
        [EnumMember]
        Muhendis = 3,

        [Display(Name = "Şef")]
        [EnumMember]
        Sef = 4,

        [Display(Name = "Müdür")]
        [EnumMember]
        Mudur = 5,

        [Display(Name = "Daire Başkanı")]
        [EnumMember]
        DaireBaskani = 6
    }
}