2014-11-17 61 views
1

的陣列我有一個字符串數組,其項目是等效字符串枚舉的項目:將字符串轉換爲[]其相關枚舉

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

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

如何通過LINQ strArray將從string[]MyEnum[]

回答

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

或者,如果這些字符串來自用戶輸入,則可能需要使用Enum.TryParse

+0

@KonradKokosa正確的,固定的:) – dcastro

+0

我想你可以移動施法,只是這樣做:'strArray.Select (s =>(MyEnum)Enum.Parse(typeof(MyEnum),s))。ToArray();'(就像另一種語法)。 –

+0

@MatthewWatson Yup,我更喜歡自己調用'Cast ',它利用了函數式編程的清晰性和可讀性。 – dcastro

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

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

您也可以跳過完全解析子步線...

 MyEnum[] results2 = (from item in strArray 
      select (MyEnum) Enum.Parse(typeof (MyEnum), item)).ToArray(); 
+1

您正在根據需要創建'object []',而不是'MyEnum []'。 –

+0

答覆已更新;在Enum.Parse – WestDiscGolf

+0

的返回上錯過了一個表演,是的,或者'ToastDAY'前面的'.Cast ()'(如dcastro的答案所示)。 –