如何将字符串转换为枚举

Ala*_*an2 3 .net c# 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 "";
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做的是获取 noa 的值并将其转换为 NOA。

这是我尝试过的。但是我收到一条错误消息,说“字符串不包含值的定义”:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers").Value;
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时。我收到一条错误消息“无法将类型字符串转换为 Japanese.NOA:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers");
Run Code Online (Sandbox Code Playgroud)

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

suj*_*lil 5

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

NOA noa;
bool conversionResult = Enum.TryParse(App.DB.GetSetting("NumberOfAnswers"), out noa);
Run Code Online (Sandbox Code Playgroud)

通过执行这条线,你会得到一个布尔值conversionResult,如果其真正的手段转换成功完成,如果是假的,这意味着转换失败,这时候你会得到的默认值 NOAnoa,让我们从返回的值App.DB.GetSetting("NumberOfAnswers")"10"那么的价值noaTenconversionResulttrue