2013-11-26 142 views
0

我已經在我的代碼轉換INT(即從枚舉鑄造)字符串是給枚舉值回爲字符串

string str = ((int)(UserRating)Enum.Parse(typeof(UserRating), ques.UserResponse)).ToString() 

下面的語句我需要存儲在str一個數字。像"1", "2" or "3"

我枚舉聲明如下:

public enum UserRating 
{ 
    One = 1, Two, Three, Four, Five 
} 

的發言全文如下:

UserResponse = (ques.Type == UserQuestionType.Rating ? ((int)Enum.Parse(typeof(UserRating), ques.UserResponse)).ToString() : ques.UserResponse) 
+0

顯然'ques.UserResponse'已經被定義爲一個數字符串,爲什麼在這裏打擾所有?你只是仔細檢查它是否是一個有效的*號碼?另外,'Enum'已經是一個'int',所以你不需要強制轉換爲'UserRating',然後轉換爲'int'。 – James

+1

@James'ques.UserResponse'可能是一個帶'One'的字符串 –

+0

@SriramSakthivel啊當然是啊,然而,奇怪的是,你會把評分作爲一個枚舉存儲,而不僅僅是一個整數... – James

回答

2

如果你想從你的枚舉嘗試得到「1」:

UserRating.One.ToString("d"); 

如果你想從你的枚舉得到「一」(更容易也許匹配),只是省略該參數在ToString()

UserRating.One.ToString(); 

而完整的語句被改變這樣的:

UserResponse = (ques.Type == UserQuestionType.Rating ? 
       ((UserRating)Enum.Parse(typeof(UserRating), ques.UserResponse)).ToString("d") : ques.UserResponse); 

但一定要測試它questio NS哪種類型等於UserQuestionType.Rating(或將用於測試任何總是正確的語句)

+0

我真的認爲你的解決方案應該工作。但是'((UserRating)Enum.Parse(typeof(UserRating),ques.UserResponse))。ToString(「d」)'給出''一個「,」兩個「......' – shashwat

+0

'ques的值是什麼。 UserResponse'?如果我放置「一」而不是它,我會得到「1」 – Nogard

+0

它可以是任何類似於「一」「......五」的。 100%肯定。我檢查了它 – shashwat

2

試試這個:

string str = ((int)Enum.Parse(typeof(UserRating), ques.UserResponse)).ToString(); 

您可以直接投一個枚舉值int

1

有時,它幫助使用多行:

UserRating userResponseEnum = (UserRating)Enum.Parse(typeof(UserRating), ques.UserResponse); 
int userRatingValue = (int) userResponseEnum; 
string str = userRatingValue.ToString(); 
+0

我想要一個解決方案。因爲這個陳述在if語句裏面。但我仍然不認爲這個解決方案會起作用。因爲它只是我已經完成的擴展版本。你確定這會工作..? – shashwat

+1

@shashwat不認爲,只是嘗試它,實際上它的工作原理。 –