的陣列我有一個字符串數組,其項目是等效字符串枚舉的項目:將字符串轉換爲[]其相關枚舉
enum MyEnum
{
item1,
item2,
item3,
...
}
string[] strArray = {"item2", "item3"};
如何通過LINQ strArray
將從string[]
到MyEnum[]
?
的陣列我有一個字符串數組,其項目是等效字符串枚舉的項目:將字符串轉換爲[]其相關枚舉
enum MyEnum
{
item1,
item2,
item3,
...
}
string[] strArray = {"item2", "item3"};
如何通過LINQ strArray
將從string[]
到MyEnum[]
?
MyEnum[] enumArray = strArray.Select(s => Enum.Parse(typeof(MyEnum), s))
.Cast<MyEnum>()
.ToArray();
或者,如果這些字符串來自用戶輸入,則可能需要使用Enum.TryParse
。
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();
您正在根據需要創建'object []',而不是'MyEnum []'。 –
答覆已更新;在Enum.Parse – WestDiscGolf
的返回上錯過了一個表演,是的,或者'ToastDAY'前面的'.Cast
@KonradKokosa正確的,固定的:) – dcastro
我想你可以移動施法,只是這樣做:'strArray.Select (s =>(MyEnum)Enum.Parse(typeof(MyEnum),s))。ToArray();'(就像另一種語法)。 –
@MatthewWatson Yup,我更喜歡自己調用'Cast',它利用了函數式編程的清晰性和可讀性。 –
dcastro