将值与c#中的枚举进行比较

时间:2013-10-18 06:12:18

标签: c# enums

我正在构建一个复杂问题的简单例子。

为简单起见,有一个下拉列表,其中填写了一年中的几个月。

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
}
  1. 从下拉列表中选择任何月份值后,我必须通过一些与存储其数值的枚举的匹配来获得适当的数值。

    例如:下拉值为5月,因此其对应的数字部分为5。

  2. 从数据库获取数值后,我需要获取枚举的文本部分。

    例如:数据库中的值为5,因此其对应的文本部分为MAY。

  3. 何我可以实现上述情况?

3 个答案:

答案 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();