Convert string array to enum on the fly

new bie picture new bie · Dec 12, 2012 · Viewed 20k times · Source

I am binding an enum to a property grid like this:

public enum myEnum
{
    Ethernet,
    Wireless,
    Bluetooth
}

public class MyClass
{
    public MyClass()
    {
        MyProperty = MyEnum.Wireless;
    }

    [DefaultValue(MyEnum.Wireless)]
    public MyEnum MyProperty { get; set; }
}

public Form1()
{
    InitializeComponent();
    PropertyGrid pg = new PropertyGrid();
    pg.SelectedObject = new MyClass();
    pg.Dock = DockStyle.Fill;
    this.Controls.Add(pg);
}

My problem: I get data on the fly when the program is running. I read the network adapter then store adapter names to myArray like this:

string[] myArray = new string[] { };
myArray[0] = "Ethernet";
myArray[1] = "Wireless";
myArray[2] = "Bluetooth";

Is possible convert myArray to myEnum on the fly using c#? Thank You.

Answer

Joshua picture Joshua · Dec 12, 2012

Sure! This is all you need:

IEnumerable<myEnum> items = myArray.Select(a => (myEnum)Enum.Parse(typeof(myEnum), a));