2014-05-12 295 views
-2

检查Enum是否包含字符串?

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")) 

这不是为我工作

+2

'Enum.IsDefined'将返回如果属实检查你的关键字符串在Enum中退出。 “不工作”是什么意思? –

+2

你是什么意思“这不适合我”?你有错误吗?结果是否与您预期的不同?如果是这样,什么? – Rik

回答

0

第一个示例:

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

Four调用此,你会得到else分支。拨打电话Two即可使用。

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

+0

感谢回答..... – Singh

+0

@Singh:不客气。既然你是新来的,如果答案最好回答你的问题,不要忘记标记答案。 –

1

确保试图解析时,它是一个精确匹配。您可以比较之前使生活通过强制的情况下更容易,如果你知道你的枚举只包含小写值,例如:

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

... 

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

事实上,最好使枚举全部大写或小写,然后在TryParse之前使用ToLower()。 – Murphy

+0

非常感谢....知道了 – Singh

1

尝试

Enum.GetNames(typeof(eNUM)); 

,这将让你在枚举作为字符串的所有值,那么你可以使用LINQ功能像包含或任何

相关问题