सूची <string> के लिए एक एनम कन्वर्ट


102

मैं निम्नलिखित एनम को तारों की सूची में कैसे परिवर्तित करूं?

[Flags]
public enum DataSourceTypes
{
    None = 0,
    Grid = 1,
    ExcelFile = 2,
    ODBC = 4
};

मुझे यह सटीक प्रश्न नहीं मिला, यह Enum to List सबसे नज़दीकी है लेकिन मैं विशेष रूप से चाहता हूँList<string>

जवाबों:


177

उपयोग Enumस्थिर विधि की, GetNames। यह एक रिटर्न string[], इस तरह से:

Enum.GetNames(typeof(DataSourceTypes))

यदि आप एक ऐसी विधि बनाना चाहते हैं जो केवल एक ही प्रकार के लिए ऐसा करती है enum, और उस सरणी को a में परिवर्तित करती है List, तो आप इसे इस प्रकार लिख सकते हैं:

public List<string> GetDataSourceTypes()
{
    return Enum.GetNames(typeof(DataSourceTypes)).ToList();
}

Using System.Linq;उपयोग करने के लिए आपको अपनी कक्षा में सबसे ऊपर की आवश्यकता होगी ।TLList ()


7
@DCShannon कृपया लोकप्रिय प्रश्नों / उत्तरों को संपादित न करें और स्पष्टीकरण को छोटा करें। जबकि आप और मैं शॉर्टहैंड कोड को समझते हैं, नौसिखिया को अपने सीखने के साथ इसे जोड़ने के लिए सभी अतिरिक्त विवरणों की आवश्यकता है ।
जेरेमी थॉम्पसन

यह एक स्ट्रिंग सरणी के बजाय Enum.GetNames(typeof(DataSourceTypes))एक सामान्य रिटर्न लगता है System.Array?
सूकी

@ सूकी, एमएसडीएन लिंक देखें, यह गेटनेम () विधि का हस्ताक्षर है :public static string[] GetNames
जेरेमी थॉम्पसन

30

मैं एक और समाधान जोड़ना चाहता हूं: मेरे मामले में, मुझे ड्रॉप डाउन बटन सूची आइटम्स में Enum समूह का उपयोग करने की आवश्यकता है। इसलिए उनके पास स्थान हो सकता है, अर्थात अधिक उपयोगकर्ता के अनुकूल विवरण की आवश्यकता होती है:

  public enum CancelReasonsEnum
{
    [Description("In rush")]
    InRush,
    [Description("Need more coffee")]
    NeedMoreCoffee,
    [Description("Call me back in 5 minutes!")]
    In5Minutes
}

एक सहायक वर्ग (हेल्परमेथोड्स) में मैंने निम्न विधि बनाई:

 public static List<string> GetListOfDescription<T>() where T : struct
    {
        Type t = typeof(T);
        return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
    }

जब आप इस सहायक को कॉल करते हैं तो आपको आइटम विवरणों की सूची मिल जाएगी।

 List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();

ADDITION: किसी भी स्थिति में, यदि आप इस विधि को लागू करना चाहते हैं तो आपको जरूरत है: Enum के लिए GetDescription एक्सटेंशन। यही है वह जो मेरे द्वारा उपयोग किया जाता है।

 public static string GetDescription(this Enum value)
    {
        Type type = value.GetType();
        string name = Enum.GetName(type, value);
        if (name != null)
        {
            FieldInfo field = type.GetField(name);
            if (field != null)
            {
                DescriptionAttribute attr =Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
                if (attr != null)
                {
                    return attr.Description;
                }
            }
        }
        return null;
        /* how to use
            MyEnum x = MyEnum.NeedMoreCoffee;
            string description = x.GetDescription();
        */

    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.