我正在构建一个复杂问题的简单例子。
为简单起见,有一个下拉列表,其中填写了一年中的几个月。
BindDropDown()
{
ddlColors.DataSource = GetAllMonths();//Returns a List<string> with months
ddlColors.DataBind();
//note the drop down only have data fields no value fields no corresponding numeric values of the months.
}
public enum Months
{
January = 1,
February = 2,
March = 3,
April = 4,
May = 5,
June = 6,
July = 7,
August = 8,
September = 9,
October = 10,
November = 11,
December = 12
}
从下拉列表中选择任何月份值后,我必须通过一些与存储其数值的枚举的匹配来获得适当的数值。
例如:下拉值为5月,因此其对应的数字部分为5。
从数据库获取数值后,我需要获取枚举的文本部分。
例如:数据库中的值为5,因此其对应的文本部分为MAY。
何我可以实现上述情况?
答案 0 :(得分:2)
您可以将整数值强制转换为枚举类型:
int value = 5;
string month = ((Months)value).ToString();
或者您可以使用GetName
方法:
int value = 5;
string month = Enum.GetName(typeof(Months), value);
答案 1 :(得分:1)
1)使用Enum.Format()按枚举的文本值获取小数值:
<强>编辑:强>
var monthNumber = Enum.Format(typeof(Months), Enum.Parse(typeof(Months), ddlColors.SelectedValue.ToString()),"d");
2)只需将整数转换为枚举并调用它的ToString()
var month = ((Months)value).ToString();
答案 2 :(得分:0)
1。)您可以使用Enum.Parse()
将字符串转换为枚举(请注意,对于不区分大小写的情况,还有一个重载)。
(Months)Enum.Parse(typeof(Months), "May");
2.。)要将值转换为字符串,只需调用ToString()
。
((Months)5).ToString();