从数据库查询数据中获取枚举描述
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
.
我正在从数据库中获取数据并将其填充到模型中并返回该模型。 我的枚举 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
.