1

I have a string array which its items are string equivalent of an enum items:

enum MyEnum
{
    item1,
    item2,
    item3,
    ...
}

string[] strArray = {"item2", "item3"};

How to convert strArray from string[] to MyEnum[] by linq?

Naser Asadi
  • 1,153
  • 18
  • 35

2 Answers2

4
MyEnum[] enumArray = strArray.Select(s => Enum.Parse(typeof(MyEnum), s))
                             .Cast<MyEnum>()
                             .ToArray();

Alternatively, if those strings come from user input, you may want to use Enum.TryParse instead.

dcastro
  • 66,540
  • 21
  • 145
  • 155
1
        string[] strArray = { "item2", "item3" };

        MyEnum[] results = (from item in strArray
            let parsed = (MyEnum) Enum.Parse(typeof (MyEnum), item)
            select parsed).ToArray();

You can also skip the parsed sub step line completely ...

        MyEnum[] results2 = (from item in strArray
            select (MyEnum) Enum.Parse(typeof (MyEnum), item)).ToArray();
WestDiscGolf
  • 4,098
  • 2
  • 32
  • 47