C # में सभी एनम मानों की एक सरणी कैसे प्राप्त करें?


91

मेरे पास एक एनम है जिसे मैं सभी संभावित मूल्यों को प्रदर्शित करना चाहता हूं। क्या मैन्युअल रूप से ऐसी सूची बनाने के बजाय एनम के सभी संभावित मूल्यों की एक सरणी या सूची प्राप्त करने का एक तरीका है? जैसे अगर मेरे पास एक एनम है:

public enum Enumnum { TypeA, TypeB, TypeC, TypeD }

कैसे मैं एक प्राप्त करने में सक्षम हो जाएगा List<Enumnum>जिसमें { TypeA, TypeB, TypeC, TypeD }?


जवाबों:


162

यह आपको उपयोग करने वाले एनम मूल्यों का एक सादा सरणी देता है Enum.GetValues:

var valuesAsArray = Enum.GetValues(typeof(Enumnum));

और यह आपको एक सामान्य सूची मिलती है:

var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();

धन्यवाद, वास्तव में मैं क्या देख रहा था!
मार्क लिमोहिन

5
यह मुझे हमेशा आश्चर्यचकित करता है कि क्यों Enumnum.GetValues()और Enumnum.GetNames()क्या मौजूद नहीं है।
दिनांक

8
एक सरणी चर के लिए जहां संकलन-समय पर तत्व प्रकार जाना जाता है, उपयोग करें var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
जेपी स्टिग नीलसन

याEnum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
mr5

@ mr5: आपके उदाहरण में, क्या ActualTypeमतलब होना चाहिए ? एक एनुम के लिए, यह Enumnumओपी के उदाहरण में होगा, या यह अंतर्निहित प्रकार (आमतौर पर int) हो सकता है । क्या आपके मन में कुछ और था?
डर्क वोल्मार


6
Enum.GetValues(typeof(Enumnum));

Enum में मानों की एक सरणी देता है।


5

आप इस तरह से करना चाह सकते हैं:

public enum Enumnum { 
            TypeA = 11,
            TypeB = 22,
            TypeC = 33,
            TypeD = 44
        }

यह सब पूर्णांक मान enumहै 11,22,33,44

आप इन मूल्यों को इसके द्वारा प्राप्त कर सकते हैं:

var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);

string.Join(",", enumsValues)है 11,22,33,44



2

इसके साथ:

string[] myArray = Enum.GetNames(typeof(Enumnum));

और आप मानों को ऐरे से एक्सेस कर सकते हैं:

Array myArray = Enum.GetValues(typeof(Enumnum));

1
Enum.GetValues ​​एक स्ट्रिंग नहीं लौटाता []
मैसेंजर


1

यदि आप अधिक सामान्य तरीका पसंद करते हैं, तो यह यहाँ है। आप अपनी आवश्यकता के अनुसार और अधिक कन्वर्टर्स जोड़ सकते हैं।

    public static class EnumConverter
    {

        public static string[] ToNameArray<T>()
        {
            return Enum.GetNames(typeof(T)).ToArray();
        }

        public static Array ToValueArray<T>()
        {
            return Enum.GetValues(typeof(T));
        }

        public static List<T> ToListOfValues<T>()
        {
            return Enum.GetValues(typeof(T)).Cast<T>().ToList();
        }


        public static IEnumerable<T> ToEnumerable<T>()
        {
            return (T[])Enum.GetValues(typeof(T));
        }

    }

नमूना कार्यान्वयन:

   string[] roles = EnumConverter.ToStringArray<ePermittedRoles>();
   List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>();
   Array data = EnumConverter.ToValueArray<ePermittedRoles>();

0

भी आप उपयोग कर सकते हैं

var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";

jum format के रूप में enum में सभी तत्वों को प्राप्त करने के लिए।


0

ओपी ने पूछा कि enumC # में सभी मूल्यों की एक सरणी कैसे प्राप्त करें ?

यदि आप enumC # में चयनित मानों की एक सरणी प्राप्त करना चाहते हैं तो क्या होगा ?

आपका Enum

    enum WeekDays 
    {
        Sunday, 
        Monday,
        Tuesday
    }

अगर आप सिर्फ Sundayअपने से चयन करना चाहते हैंEnum

  WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };

  WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where
  (x => x == WeekDays.Sunday).ToArray();

श्रेय जानकार टीएल को जाता है।

संदर्भ:

1।

2।

आशा किसी की मदद करती है।

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