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

本文关键字:枚举 比较 | 更新日期: 2023-09-27 18:35:49

我正在构建一个简单的例子,说明它是其中一部分的复杂问题。

为了方便起见,有一个下拉列表,其中充满了一年中的月份。

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

    例如:下拉列表中的值是 May,因此其对应的数字部分 5。

  2. 从数据库获取将是数字的值后,我必须如何获取枚举的文本部分。

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

何 我能实现上述场景吗?

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

您可以将整数值强制转换为枚举类型:

int value = 5;
string month = ((Months)value).ToString();

或者,您可以使用GetName方法:

int value = 5;
string month = Enum.GetName(typeof(Months), value);
1)

使用 Enum.Format() 通过枚举的文本值获取十进制值:

编辑:

 var monthNumber = Enum.Format(typeof(Months), Enum.Parse(typeof(Months), ddlColors.SelectedValue.ToString()),"d");

2)只需将整数转换为枚举并调用它为ToString()

 var month = ((Months)value).ToString();

1.) 您可以使用 Enum.Parse() 将字符串转换为枚举(请注意,还有一个不区分大小写的重载)。

(Months)Enum.Parse(typeof(Months), "May");

2.)要将值转换为字符串,只需调用ToString() .

((Months)5).ToString();