C# 如何将字符串强制转换为枚举

C# 如何将字符串强制转换为枚举,c#,.net,string,enums,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 } pub

我有以下代码:

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 noa = (NOA)App.DB.GetSetting("NumberOfAnswers");

有人能告诉我如何获取值并将其放入noa中吗?

似乎您是从指定的方法中以字符串的形式获取输出。并且您希望将其转换为枚举,这里更好的选项是TryParse,它可以如下所示使用:

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

通过执行这一行,您将在
conversionResult
中获得一个布尔值,如果它的true表示转换成功,如果它的false表示转换失败,那么这次您将在
NOA
中获得
NOA
的默认值,让
App.DB.GetSetting(“NumberOfAnswers”)返回值
be
“10”
noa
的值将为
Ten
conversionResult
将为
true
首先将值解析为枚举类型,然后将其转换为整数

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

不走运-我完全可以控制设置中的内容,所以您也可以给出一个不包括检查的建议。谢谢。对不起,可能我不太清楚。我希望在右边有一个调用GetSettings的东西,并将值作为noa的一种类型输入noa。Thanks@Alan:更新了答案。
var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers")));