如何将字符串转换为枚举

时间:2016-12-16 06:04:32

标签: c# .net string enums

我有以下代码:

public string GetSetting(string setting)
{
   return db2.ExecuteScalar<string>("SELECT VALUE FROM Setting WHERE  SettingType = ?", setting);
}

public enum NOA
{
    All = 0,
    Five = 5,
    Seven = 7,
    Nine = 9,
    Ten = 10
}
public static partial class Extensions
{
    public static string Text(this NOA noa)
    {
        switch (noa)
        {
            case NOA.Ten: return "10";
            case NOA.Five: return "5";
            case NOA.Seven: return "7";
            case NOA.Nine: return "9";
        }
        return "";
    }
}

我想要的是获得noa的价值并将其投入NOA。

这是我尝试过的。但我得到一个错误说&#34; String不包含Value&#34;的定义:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers").Value;

当我试试这个。我得到一个错误说&#34;无法将类型字符串转换为Japanese.NOA:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers");

有人可以告诉我如何获得价值并将其放入noa吗?

2 个答案:

答案 0 :(得分:4)

好像您从指定的方法获取输出为字符串。并且你希望它被转换为枚举,这里更好的选择是TryParse,可以像下面这样使用:

NOA noa;
bool conversionResult = Enum.TryParse(App.DB.GetSetting("NumberOfAnswers"), out noa);

通过执行此行,您将获得conversionResult中的布尔值,如果它的true表示转换成功完成,如果它为false,这意味着转换失败,这次您将获得{{1}的默认值1}}在NOA中,让noa的返回值为App.DB.GetSetting("NumberOfAnswers")"10"的值为noaTenconversionResult true

答案 1 :(得分:2)

首先将值解析为枚举类型,然后将其转换为整数

var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers")));