2012-06-22 76 views
1

我有一個枚舉類叫做Gender和我在這像演員枚舉整數

public enum GENDER 
{ 
    MALE = 1, 
    FEMALE = 2, 
    OTHERS = 3, 
} 

,並在我的業務對象的值我剛剛創建了一個屬性用於此類似

public GENDER Gender 
{ 
    get 
    { 
     return gender; 
    } 
    set 
    { 
     gender = value; 
    } 
} 

在我數據庫其類型integer。爲此,我嘗試通過名稱Gender來指定添加函數中的Gender值。但其顯示錯誤。是否有可能將枚舉強制轉換爲整數,以便自動獲取該值。

誰能幫助我在這裏....

+0

你如何寫入數據庫?如果實體框架,那麼不幸的是不支持枚舉/ int轉換。請參閱[這裏](http://stackoverflow.com/q/2065612/121309)。 –

+1

在性別上有'別人'! ;-) –

+0

上午通過實體框架 – shanish

回答

1

如果(INT)性別不足以解決您的問題投,嘗試添加int.Parse(VAR,INT)在你的代碼中。它可能會有所幫助......

5

(int)Gender將做到這一點。要投一個特定的值而不是屬性,您將執行類似(int)GENDER.MALE;

1

你應該能夠使用一個強制轉換在一個整數和一個枚舉值之間進行轉換。

int n = (int)GENDER.MALE;

GENDER g = (GENDER)1;

如果你與你正在從數據庫中讀取列的字符串(或與此有關的任何字符串)的交易,你可以做到以下幾點:

GENDER g = (GENDER) Enum.Parse(typeof(GENDER), "MALE");

請注意,Enum.Parse會返回一個對象,因此您必須先將它轉換爲您的枚舉類型。

+0

如果我創建了一個字符串屬性,公共字符串名稱,我可以簡單地給'name'傳遞值的權利,以同樣的方式是可以傳遞枚舉值,因爲我不知道值是1還是別的東西(在你的例子中它是1) – shanish

+0

如果你正在處理字符串,你必須另闢蹊徑。我會查找並編輯我的帖子。 –

1

如果要數據的基礎值設置爲性別屬性來完成這個:

yourintdatabasefiled=(int)GENDER.yourproperty 
3

枚舉默認爲「繼承」自int(它們存儲在int默認情況下,除非你選擇另一種整體式),所以你可以簡單地轉換爲從int沒有任何麻煩:

int i = (int)GENDER.MALE; 

GENDER g = (GENDER)2; 

請注意,隱式投射是而不是支持,投射必須明確。

當心,中投不做範圍內的任何檢查,這樣你就可以施放int不具有GENDER值成GENDER變量沒有錯誤:

GENDER g = (GENDER)26; 
1

下面的例子就足夠了:

int val = (int)Gender.Male; 
int val2 = (int)_gender; 

也有一些System.Enum方法來幫助你發現和處理像枚舉值:

Console.WriteLine("The values of the Gender Enum are:"); 
foreach (int i in Enum.GetValues(typeof(Gender))) 
{ 
    Console.WriteLine(i); 
} 
1

以上是正確的。性別現在是一個類型,就像INT,這樣你就可以相應地投 - 左右逢源,太:

(int)Gender = . . . 
/* Or */ 
(Gender)int = . . . 

所以,對於

int i = (int)GENDER.male; 

我就等於1

和相同對於

Gender = GENDER.male; 
i = (int)Gender; 

我也將是1

+0

你應該舉例說明'i =(int)性別;'返回1. –

+0

啊,好抓。 Shanish,在你的代碼中你說'public enum GENDER {male = 1,...};'所以如果你將Gender變量設置爲GENDER.male,就像我在例子中做的那樣,那麼當你(int)強制性別時,你會得到1的值,因爲這是你在第一次進行枚舉時賦予男性的int等價值。如果你需要更多隻是問! – CM90

+0

感謝CM90 .....我明白了 – shanish