根据值获取枚举字符串名称

582

我有一个像这样的枚举结构:

public enum EnumDisplayStatus
{
    None    = 1,
    Visible = 2,
    Hidden  = 3,
    MarkedForDeletion = 4
}
在我的数据库中,枚举是通过值进行引用的。我的问题是,如何将枚举的数字表示转换回字符串名称。
例如,给定“2”,结果应该是“Visible”。
15个回答

6

我使用的是以下给出的代码

 CustomerType = ((EnumCustomerType)(cus.CustomerType)).ToString()

5

获取字符串值[名称]的方法:

EnumDisplayStatus enumDisplayStatus = (EnumDisplayStatus)GetDBValue();
string stringValue = $"{enumDisplayStatus:G}"; 

获取枚举值的方法:

string stringValue = $"{enumDisplayStatus:D}";
SetDBValue(Convert.ToInt32(stringValue ));

为什么不直接使用.ToString()呢?'facepalm' - MeTitus

4

只需将int强制转换为枚举类型:

EnumDisplayStatus status = (EnumDisplayStatus) statusFromDatabase;
string statusString = status.ToString();

1
你可以尝试这个。
string stringValue=( (MyEnum)(MyEnum.CSV)).ToString();

1
强制转换是多余的。 - derekbaker783

0

另一个选项(受 PowerShell 启发)是使用 Type.GetEnumName() 方法:

int enumValue = 2;
string enumName = typeof(EnumDisplayStatus).GetEnumName(enumValue);

测试表明,它比Enum.GetName()方法略快(在1e8次迭代中大约快4%)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接