এনামকে <স্ট্রিং> তালিকায় রূপান্তর করুন


102

নীচের এনামকে আমি কীভাবে স্ট্রিংয়ের তালিকায় রূপান্তর করব?

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

আমি এই সঠিক প্রশ্নটি খুঁজে পাইনি, এই এনাম টু লিস্টটি নিকটতম তবে আমি বিশেষত চাইList<string>

উত্তর:


177

Enumএর স্থির পদ্ধতি ব্যবহার করুন GetNames,। এটি এর string[]মতো একটি ফেরত দেয় :

Enum.GetNames(typeof(DataSourceTypes))

আপনি যদি এমন একটি পদ্ধতি তৈরি করতে চান যা কেবলমাত্র এক ধরণের জন্য এটি করে enumএবং সেই অ্যারেটিকে একটিতে রূপান্তরিত করে List, আপনি এই জাতীয় কিছু লিখতে পারেন:

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

আপনি করতে হবে Using System.Linq;ব্যবহার .ToList আপনার বর্গ উপরের ()


7
@ ডিসিএস শ্যানোন দয়া করে জনপ্রিয় প্রশ্ন / উত্তরগুলি সম্পাদনা করবেন না এবং ব্যাখ্যাগুলি সঙ্কুচিত করবেন না। আপনি এবং আমি শর্টহ্যান্ড কোডটি বুঝতে পেরে, নবাবিদের তাদের শেখার সাথে এটি সংযুক্ত করার জন্য অতিরিক্ত অতিরিক্ত সমস্ত বিবরণ প্রয়োজন ।
জেরেমি থম্পসন

মনে হচ্ছে স্ট্রিং অ্যারের পরিবর্তে Enum.GetNames(typeof(DataSourceTypes))জেনেরিক ফিরবে System.Array?
সুকি

@ সুকি, এমএসডিএন লিঙ্কটি দেখুন, এটিই getNames () পদ্ধতির স্বাক্ষর :public static string[] GetNames
জেরেমি থম্পসন

30

আমি অন্য সমাধান যুক্ত করতে চাই: আমার ক্ষেত্রে, আমাকে ড্রপ ডাউন বোতামের তালিকা আইটেমগুলিতে একটি এনুম গ্রুপ ব্যবহার করা উচিত। সুতরাং তাদের স্থান থাকতে পারে, যেমন আরও ব্যবহারকারী বান্ধব বিবরণ প্রয়োজন:

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

সংস্থান: যে কোনও ক্ষেত্রে, আপনি যদি এই পদ্ধতিটি প্রয়োগ করতে চান তবে আপনার প্রয়োজন: এনামের জন্য গেটডেস্ক্রিপশন এক্সটেনশন। এটিই আমি ব্যবহার করি।

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

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