我有这样的枚举类型:
public enum MyEnum: ulong
{
All = 0UL,
Func1 = 1UL,
Func2 = 4UL,
Func3 = 8UL,
Func4 = 16UL,
Func5 = 32UL,
Func6 = 256UL,
// and so on...
// but notice this is the order, on purpose
}
现在,我想确定是否可能,如果用户输入例如9应该是Func1和Func3的组合,如何将Func1和Func3从9输入到列表中。我在这个网站上搜索答案,但没有运气。我在.net 3.5中需要这个。如果有可能这是重复的问题,或者有类似的感谢你指出我。假设我无法改变它们,就像1 2 4 8 16 ...
由于
答案 0 :(得分:0)
假设您查询的值为myUlong
,请使用:
MyEnum myValue = (MyEnum)myUlong;
var result =
((MyEnum[])Enum.GetValues(typeof(MyEnum))).Where(n => (n & myValue) != 0);
//that will get you your result
答案 1 :(得分:0)
你可以检查(n& myValue)!= 0或(n& myValue)== n