如何在LINQ的Any子句中强制转换枚举为int进行比较?
问题解答
你的代码无法正常工作的核心原因是把比较运算符==写成了赋值运算符=,和枚举的强制转换本身无关。
正确的显式转换int写法:
if(myClassList.Any(x => (int)x.Profession == (int)XyzEnum.SpecificProfession)) { // 你的业务逻辑代码 }
补充说明:
在C#里,枚举类型直接用==比较时,默认就是对比它们底层的整数数值。如果你的XyzEnum没有特殊自定义逻辑(比如标记[Flags]特性、重写相等方法),下面的写法效果完全一致,还更简洁:
if(myClassList.Any(x => x.Profession == XyzEnum.SpecificProfession)) { // 你的业务逻辑代码 }
内容的提问来源于stack exchange,提问作者user2645738
相关产品推荐
相关产品推荐

