2010-03-29 156 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);