我正在尝试生成标记枚举的逆。下面是枚举:
[Flags]
public enum MyType
{
Unknown = 0,
A = 1 << 0,
B = 1 << 2,
C = 1 << 3,
D = 1 << 4,
E = 1 << 5,
F = 1 << 6
}
我已经定义了一个静态MyType mtGroup1
值为(A | B)
. 我想生成这个的倒数,不包括Unknown
.
我的解决方案:
MyType t = MyType.Unknown;
foreach (var vType in Enum.GetValues(typeof(MyType)).OfType<MyType>())
{
if ((mtGroup1 & vType) != vType)
t = t | vType; //Consolidates into a single enum, excluding unknown
}
的结果值为,这t
是C | D | E | F
期望的结果。这种方法有效,但我希望有一种更简单的方法来使用 LINQ 进行整合,如上所示(如果更简单,其他非 LINQ 方法也可以接受)。
谢谢!