从数据库查询数据中获取枚举描述

Get enum description from DB query data

我正在从数据库中获取数据并将其填充到模型中并返回该模型。 我的枚举 class:

  public enum ProcessEnum
{
    [Description("Done")]
    Done = 1,
    [Description("In Progress")]
    InProgress = 2,
    [Description("Pending")]
    Pending = 3,
}

响应模型class:

     public class ReportsFilterModel
    {
        [Required]
        public ProcessEnum processStatus { get; set; }
    }

方法class:

 finalReports = await report
                    .Select(x => new ReportsFilterModel
                    {
                        Id = x.Id,
                        processStatus = (ProcessEnum)x.ProcessID
                    }).ToListAsync();

这个 returns 我在进行中,我需要描述,即 "In Progress"。 这只是一个片段,其中有很多地方我需要枚举的描述。

您可以使用 Display 属性:

public enum MyColors
{
    [Display(Name = "Rot")] Red,
    [Display(Name = "Grün")] Green,
    [Display(Name = "Blau")] Blue
}

public enum MyAnimals
{
    Horse,
    Dog,
    Cat
}

public void DoThings()
{
    var enumList = new List<Enum>
    {
        MyColors.Red,
        MyColors.Green,
        MyColors.Blue,
        MyAnimals.Horse,
        MyAnimals.Dog,
        MyAnimals.Cat,
    };

    enumList.ForEach(e => Console.WriteLine(e.GetName()));
    Console.WriteLine("-------------------------------");
    // print 'Display Name' if it exists, else print it's name as is.
    enumList.ForEach(e => Console.WriteLine(e.GetAttribute<DisplayAttribute>()?.Name ?? "-"));
    Console.WriteLine("-------------------------------");
    enumList.ForEach(e => Console.WriteLine(e.GetDisplayName()));
}

输出:

Red
Green
Blue
Horse
Dog
Cat
-------------------------------
Rot
Grün
Blau
-
-
-
-------------------------------
Rot
Grün
Blau

编辑:刚刚意识到,我使用了我的 fiddle 项目的记录器服务 class。替换为 Console.WriteLine.