解析字符串以匹配枚举值

m4r*_*4rc 5 c# enums

如果我有一个char的枚举

public enum Action
{
    None,
    Address = 'A',
    Amendment = 'C',
    Normal = 'N'
}
Run Code Online (Sandbox Code Playgroud)

解析单个字符串以匹配相应的枚举char的最佳方法是什么,如果未找到则匹配None.TryParse匹配Name而不是值.

例如,如果我的字符串是"C",我想要获得Action.Amendement

提前致谢

Dar*_*rov 5

char c = 'C'; // existent value
var action = Enum.GetValues(typeof(Action)).Cast<Action>().FirstOrDefault(a => (char)a == c);
// action = Action.Amendment
Run Code Online (Sandbox Code Playgroud)

和:

char c = 'X'; // non existent value
var action = Enum.GetValues(typeof(Action)).Cast<Action>().FirstOrDefault(a => (char)a == c);
// action = Action.None
Run Code Online (Sandbox Code Playgroud)