gpt4 book ai didi

c# - 在枚举值上使用 Where

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:28 25 4
gpt4 key购买 nike

我已经用 [Flag] 属性定义了一个 enum

给定一个整数值,我想打印整数值中设置的位的所有 enum 值。

这是我目前所拥有的。

string s = string.Join(", ", Enum.GetValues(typeof(MyEnumType)).OfType<Enum>()
.Where(x => (MyIntValue & (int)x) != 0));

但是在最后一行中对 int 的类型转换给了我以下错误。

Cannot convert type 'System.Enum' to 'int'

我希望 Microsoft 将所有返回 Array 的框架代码替换为支持 LINQ 的类型。

但是有没有一种简单的方法可以做到这一点?

最佳答案

转换为 MyEnumType 而不是通用的 Enum 应该可以解决问题:

string s = string.Join(
", ",
Enum.GetValues(typeof(MyEnumType))
.OfType<MyEnumType>()
.Where(x => (MyIntValue & (int)x) != 0));

你真的应该使用 Cast 而不是 OfType 因为你确定这些项目是 MyEnumType 类型。

关于c# - 在枚举值上使用 Where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com