我有一個數據庫中的婚姻狀況字段,每個數字代表不同的表中的婚姻狀況。第一個表有數字1,3,4:如何將號碼映射到婚姻狀態
1 = single 3 = married 4 = divorced
第二的值有:
single married divorced
我需要一個if語句如下:如果表中的字段返回1我想價值如果3'已婚'並且如果4'離婚'(使用Response.Write),則寫入消息'single'。
我有一個數據庫中的婚姻狀況字段,每個數字代表不同的表中的婚姻狀況。第一個表有數字1,3,4:如何將號碼映射到婚姻狀態
1 = single 3 = married 4 = divorced
第二的值有:
single married divorced
我需要一個if語句如下:如果表中的字段返回1我想價值如果3'已婚'並且如果4'離婚'(使用Response.Write),則寫入消息'single'。
string GetStatus(int StatusCode)
{
return StatusCode == 1 ? "single" : StatusCode == 3 ? "married" : "divorced";
}
順便說一句,通常沒有很好的理由來規範這個目標。如果您將實際狀態存儲在表中並且磁盤空間量可以忽略不計,性能會更好。
編輯: @喬恩的想法可能比這個功能更好
你可以寫,如果其他人,或case語句,但容易,只需使用陣列對於這樣的小單子
string[] maritalStatus = new string[] { "", "Single", "", "Married", "Divorced"};
Response.Write (maritalStatus[dbValue]);
我喜歡這個,富有創意和靈活。 +1 – Sruly 2010-08-04 10:56:48
我建議詞典
感謝您的投票。只需要再寫幾行就可以了,上面的代碼只是簡短而且簡潔,如果id沒有實際跳轉,看起來會更好 – 2010-08-04 11:12:51
另一個選項將聲明一個枚舉映射到像這樣的值:
enum RelationshipStatus
{
Single = 1,
Married = 3,
Divorced = 4
}
然後你可以調用ToString方法包含您的枚舉值的變量。請注意,您需要將SQL表中的整數值轉換爲枚舉類型。
這種方法的優點是可以完全消除條件if語句,我認爲結果更具可讀性。缺點是如果你需要的話,本地化到其他語言(翻譯)並不容易。
也許一個枚舉將是最優雅的方法?
public enum MaritalStatus
{
Single = 1,
Married = 3,
Divorced = 4
}
然後,你可以簡單地使用Enum.GetName()和Enum.Parse()爲字符串,int和MaritalStatus對象之間的轉換。這也可能爲您在其他一些業務邏輯中提供更優雅的解決方案。
有不同的方法來做到這一點,好的和壞的方面
像 `
public enum MaritalStatus
{
Single = 1,
Married = 3,
Divorced = 4
}
MaritalStatus status = (MaritalStatus) 4;
Console.WriteLine(status);
` 等
(未遂清理的問題,不知道如果我不小心改變它的意思。) – dtb 2010-08-04 10:54:35