সি # তে সমস্ত এনাম মানগুলি কীভাবে পাবেন?


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();

ধন্যবাদ, আমি ঠিক যা খুঁজছিলাম!
মার্ক লেওমাইন

4
এটি আমাকে সর্বদা অবাক করে তোলে কেন Enumnum.GetValues()এবং Enumnum.GetNames()অস্তিত্ব নেই।
ডাল

8
একটি অ্যারে ভেরিয়েবলের জন্য যেখানে উপাদান টাইপটি সংকলন সময়ে জানা যায়, ব্যবহার করুন var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
জেপ্পে স্টিগ নীলসেন

বাEnum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
এমআর 5

@ এমআর 5: আপনার উদাহরণে, এর ActualTypeঅর্থ কী হওয়া উচিত? একটি এনামের জন্য, এটি ওপির Enumnumউদাহরণে হবে, বা এটি অন্তর্নিহিত ধরণের (সাধারণত int) হতে পারে । তোমার মনে কি আর কিছু ছিল?
ডার্ক ভোলমার

16

এই কোড ব্যবহার করে দেখুন:

Enum.GetNames(typeof(Enumnum));

এটি string[]নির্বাচিত এনামের সমস্ত এনাম নামের সাথে একটি ফেরত দেয় ।


4
এনাম মানগুলির নাম ফেরত দেয় ; ওপি নিজেরাই মানগুলির পরে বলে মনে হচ্ছে ।
মাইকেল পেট্রোটা

6
Enum.GetValues(typeof(Enumnum));

এনামে মানগুলির একটি অ্যারে প্রদান করে।


5

আপনি এটি করতে চান:

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

এই সব int- এ মান 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));

4
এনাম.গেটভ্যালিউস কোনও স্ট্রিং ফেরায় না []
মেসেঞ্জার


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())) + "]";

জোনসান ফর্ম্যাট হিসাবে এনামে সমস্ত উপাদান পেতে।


0

ওপিতে enumসি # তে সমস্ত মানের একটি অ্যারে কীভাবে পাবেন ?

আপনি যদি 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();

ক্রেডিট জ্ঞান tl যায়।

তথ্যসূত্র:

ঘ।

ঘ।

আশা কাউকে সাহায্য করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.