检查Enum是否包含字符串?

时间:2014-05-12 09:27:11

标签: c# visual-studio-2010

我有

Enum eNUM
{
     one,Two,Three
}

我有一个UserDefinedString。例如:Four 我想检查eNUm中是否存在用户定义的字符串。我试过

eNUM _num;
if (Enum.TryParse<eNUM>("UserDefinedString", out _num))
{
   //do some thing 
}

我也尝试过:

if (Enum.IsDefined(typeof(eNUM), "UserDefinedString"))

这对我不起作用

3 个答案:

答案 0 :(得分:1)

尝试解析时,请确保它是完全匹配。如果您知道枚举仅包含小写值,则可以通过在比较之前强制大小写来使生活更轻松,例如:

Enum eNUM
{
    one, two, three ...
}

...

eNUM num;
string findThisValue = "OnE"; // Odd casing...
if (Enum.TryParse(findThisValue.ToLower(), out num))
{
    // Do something with num
}

答案 1 :(得分:1)

尝试

Enum.GetNames(typeof(eNUM));

这会将enum中的所有值作为字符串,然后您可以使用linq函数检查您的密钥,例如Contains或Any

答案 2 :(得分:0)

第一个例子有效:

if (Enum.TryParse<eNUM>("Four", out _num))
{
   //do some thing 
}
else
{
   // invalid enum value
}

使用Four调用此内容时,您将进入else分支。使用Two进行通话时,它可以正常工作。

如果您想忽略大小写,可以将TryParse的第二个参数设置为true