フラグが立てられた列挙の逆を生成しようとしています。以下は列挙型です:
[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の方法も受け入れられます)。
ありがとう!