2010-03-29 153 views
4

考虑以下枚举:转换整数枚举字符串

public enum LeadStatus 
{ 
    Cold = 1, 
    Warm = 2, 
    Hot = 3, 
    Quote = 5, 
    Convert = 6 
} 

我如何转换的整数值返回字符串时,我拉从一个数据库中的值。我已经试过:

DomainModel.LeadStatus status = (DomainModel.LeadStatus)Model.Status; 

,但我似乎得到的是“状态= 0”

回答

1

在C#的枚举用于提供一些已知的值的名字,但任何整数值是允许在枚举,它是否已命名的等效或没有。

在你的榜样,你有没有一个名为零值,但你的status变量初始化为零。我怀疑它在读取它的时候并没有从这个初始值改变。因此,它的字符串表示也是0,当你解析它时你会解析出零。

4

你在找什么是Enum.Parse。

“的名称或为等效的枚举对象的一个​​或多个枚举常数数值的字符串表示形式转换”。

这里是MSDN页:http://msdn.microsoft.com/en-us/library/essfb559.aspx

实施例:

enum Colour 
{ 
    Red, 
    Green, 
    Blue 
} 

// ... 
Colour c = (Colour) Enum.Parse(typeof(Colour), "Red", true); 

http://blogs.msdn.com/tims/archive/2004/04/02/106310.aspx

+0

我想,第一,它给了我同样的结果: 的DomainModel。 LeadStatus状态=(DomainModel.LeadStatus)Enum.Parse(typeof(DomainModel.LeadStatus),Model.Status.ToString()); status = 0 – user216205 2010-03-29 17:32:46

+1

没有0索引。咄! – user216205 2010-03-29 17:40:51

+0

而Model.status为零?我想知道为什么它不起作用,我认为从整数到枚举的明确投射应该起作用。 – vfilby 2010-03-29 17:48:49

2

礼貌只需枚举对象

+0

ToString()返回0 – user216205 2010-03-29 17:39:20

+0

Model.Status也为零吗?也许你没有从数据库中正确地读取数值。 ToString()应该做你想要的。 – 2010-03-29 18:21:33

3

之间Enum.ParseEnum.ToString上使用的ToString(),你应该能够做你需要的一切。

+0

这非常有帮助,谢谢。关于'Enum.Parse'的一个附注,你需要使用'typeof()',例如'Enum.Parse(typeof(Colors),“blue”);' – user1032613 2012-11-09 02:58:56

1

鉴于“Model.Status”是从数据库的整数,则可以恢复到枚举字符串值:

string status = Enum.GetName(typeof(DomainModel.LeadStatus), Model.Status);