3

私はこのフラグ列挙型を持っています:

public enum DataAccessPoliceis
{
      None = 0,
      A = 1,
      B = 2,
      C = 4, 
      D = 8, 
      E = B | C | D, // 14
      All = A | E // 15
}

int 値から int 値 (または複雑な列挙項目の int 値のリスト) を取得したい:

int x = 9; // enum items => D | A
List<int> lstEnumValues = ???
// after this line ...
// lstEnumValues = { 1, 8 }
// and for x = 15
// lstEnumValues = { 1, 2, 4, 8, 14, 15 }

この質問に対するあなたの解決策は何ですか?

4

5 に答える 5

8

用途はクラスEnumGetValuesメソッドが使えます。次のように試してみてください:

var lstEnumValues = new List<int>(Enum.GetValues(typeof(DataAccessPolicies)).Cast<int>());

出力は次のとおりです。

出力結果

お役に立てれば。

于 2015-02-28T07:31:31.790 に答える
1

試す:

var lstEnumValues =
    ((DataAccessPoliceis[])(Enum.GetValues(typeof(DataAccessPoliceis))))
    .Where(v => v.HasFlag(x))
    .Select(v => (int)v)  // omit if enum values are OK
    .ToList();            // omit if List<> not needed
于 2015-03-01T08:33:13.777 に答える