Попробуйте сгладить values
, как показано ниже, с помощью предиката .Select
,
var enumDictionary = Enum.GetValues(typeof(T))
.Cast<T>()
.Select(x => new
{
name = x,
value = Convert.ToInt32(Enum.Parse(typeof(T), x.ToString()))
})
.ToList();
Если вы хотите получить имя внутри атрибута Display
, вы можете использовать ниже,
var enumDictionary = Enum.GetValues(typeof(T))
.Cast<T>()
.Select(x => new
{
name = x.GetType().GetMember(x.ToString()).FirstOrDefault().GetCustomAttribute<DisplayAttribute>().GetName(),
value = Convert.ToInt32(Enum.Parse(typeof(T), x.ToString()))
})
.ToList();
Примечание: Вам необходимо импортировать некоторые пространства имен в вашу программу, например
using System.ComponentModel.DataAnnotations;
using System.Reflection;