我有一个像这样的枚举结构:
public enum EnumDisplayStatus
{
None = 1,
Visible = 2,
Hidden = 3,
MarkedForDeletion = 4
}
在我的数据库中,枚举是通过值进行引用的。我的问题是,如何将枚举的数字表示转换回字符串名称。例如,给定“2”,结果应该是“Visible”。
我使用的是以下给出的代码
CustomerType = ((EnumCustomerType)(cus.CustomerType)).ToString()
获取字符串值[名称]的方法:
EnumDisplayStatus enumDisplayStatus = (EnumDisplayStatus)GetDBValue();
string stringValue = $"{enumDisplayStatus:G}";
获取枚举值的方法:
string stringValue = $"{enumDisplayStatus:D}";
SetDBValue(Convert.ToInt32(stringValue ));
只需将int强制转换为枚举类型:
EnumDisplayStatus status = (EnumDisplayStatus) statusFromDatabase;
string statusString = status.ToString();
string stringValue=( (MyEnum)(MyEnum.CSV)).ToString();
另一个选项(受 PowerShell 启发)是使用 Type.GetEnumName()
方法:
int enumValue = 2;
string enumName = typeof(EnumDisplayStatus).GetEnumName(enumValue);
测试表明,它比Enum.GetName()
方法略快(在1e8次迭代中大约快4%)。