2
我正在嘗試生成標記的枚舉的反函數。下面是枚舉:使用LINQ標記的枚舉合併(反相組合)
[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方法也可以接受,如果更簡單)。
謝謝!
有趣! Skeet先生總是如此迅速 - 令我印象深刻。在接受你的答案之前,我會給大約一天時間讓其他人提交不是完整圖書館的答案。 – 2012-07-26 21:50:36
檢查最後一部分:'如果你不想使用[圖書館] ...'。 – 2012-07-27 14:13:21