1

次の列挙型があります。

 public enum Brands
    {
        HP = 1,
        IBM = 2,
        Lenovo = 3
    }

それから、次の形式で辞書を作成したいと思います。

// key = name + "_" + id
// value = name

var brands = new Dictionary<string, string>();
brands[HP_1] = "HP",
brands[IBM_2] = "IBM",
brands[Lenovo_3] = "Lenovo"

これまでのところ、これを行ってきましたが、メソッドから辞書を作成するのは困難です:

public static IDictionary<string, string> GetValueNameDict<TEnum>()
        where TEnum : struct, IConvertible, IComparable, IFormattable
        {
            if (!typeof(TEnum).IsEnum)
                throw new ArgumentException("TEnum must be an Enumeration type");

            var res = from e in Enum.GetValues(typeof (TEnum)).Cast<TEnum>()
                      select // couldn't do this

            return res;
        }

ありがとう!

4

2 に答える 2

7

Enumerable.ToDictionary()を使用して辞書を作成できます。

残念ながら、コンパイラは TEnum を int にキャストすることを許可しませんが、値が Enum であることを既にアサートしているため、安全にオブジェクトにキャストしてから int にキャストできます。

var res = Enum.GetValues(typeof(TEnum)).Cast<TEnum>().ToDictionary(e => e + "_" + (int)(object)e, e => e.ToString());
于 2013-10-11T10:32:50.847 に答える
2

//このコードを使用します:

 Dictionary<string, string> dict = Enum.GetValues(typeof(Brands)).Cast<int>().ToDictionary(ee => ee.ToString(), ee => Enum.GetName(typeof(Brands), ee));
于 2013-10-11T10:33:15.573 に答える