2010-09-28 14 views
61

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

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

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

+4

संभावित डुप्लिकेट [सी # में सूची में कनवर्ट करें] [http://stackoverflow.com/questions/1167361/convert-enum-to-list-in-c) –

उत्तर

116

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

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

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

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

धन्यवाद, बिल्कुल वही है जो मैं ढूंढ रहा था! –

+5

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

+4

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

1

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

Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray(); 

यह एक सरणी देता है!

6
Enum.GetValues(typeof(Enumnum)); 

में मूल्यों की एक सरणी देता है enum।

Enum.GetNames(typeof(Enumnum)); 

यह चुने गए enum के सभी enum नाम के साथ वापसी एक string[]:

12

इस कोड का प्रयास करें।

+1

एनम मूल्यों के * नाम * रिटर्न; ओपी * मूल्य * के बाद लगता है। –

1
इस के साथ

:

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

और तुम इतनी तरह सरणी मूल्यों पहुँच सकते हैं:

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

Enum.GetValues ​​एक स्ट्रिंग नहीं लौटाता है [] – messenger

0

भी आप

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

उपयोग कर सकते हैं के लिए json प्रारूप के रूप में enum में सभी तत्वों को मिल ।

1

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

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

सभी इस enum11,22,33,44 है के मूल्यों int।

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

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

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

0

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

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

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

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

आपका Enum

enum WeekDays 
    { 
     Sunday, 
     Monday, 
     Tuesday 
    } 

आप बस अपने Enum से Sunday चयन करने के लिए चाहते हैं।

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

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

क्रेडिट जानकार टीएल में जाते हैं।

संदर्भ:

1.

2.

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

संबंधित मुद्दे