Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串[]转换为其关联的枚举数组_C#_.net_Arrays_Linq_Enums - Fatal编程技术网

C# 将字符串[]转换为其关联的枚举数组

C# 将字符串[]转换为其关联的枚举数组,c#,.net,arrays,linq,enums,C#,.net,Arrays,Linq,Enums,我有一个字符串数组,它的项是与枚举项等效的字符串: enum MyEnum { item1, item2, item3, ... } string[] strArray = {"item2", "item3"}; 如何通过linq将strArray从字符串[]转换为MyEnum[] 或者,如果这些字符串来自用户输入,您可能希望改用Enum.TryParse 或者,如果这些字符串来自用户输入,您可能希望改用Enum.TryParse 您还可以完全跳过已解析的子步

我有一个字符串数组,它的项是与枚举项等效的字符串:

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

string[] strArray = {"item2", "item3"};
如何通过linq将strArray从字符串[]转换为MyEnum[]

或者,如果这些字符串来自用户输入,您可能希望改用Enum.TryParse

或者,如果这些字符串来自用户输入,您可能希望改用Enum.TryParse

您还可以完全跳过已解析的子步骤行

        MyEnum[] results2 = (from item in strArray
            select (MyEnum) Enum.Parse(typeof (MyEnum), item)).ToArray();
您还可以完全跳过已解析的子步骤行

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

@KonradKokosa正确,修复:我认为您可以移动演员阵容,只需执行以下操作:strArray.Selects=>MyEnum Enum.ParsetypeofMyEnum,s.ToArray;就像另一种语法一样。@MatthewWatson是的,我更喜欢自己调用Cast,它利用了函数式编程的清晰性和可读性。@KonradKokosa正确,修复:我认为您可以移动Cast,只需执行:strArray.Selects=>MyEnum Enum.ParsetypeofMyEnum,s.ToArray;就像另一种语法一样。@MatthewWatson是的,我更喜欢自己调用Cast,它利用了函数式编程的清晰性和可读性。您正在创建一个对象[],而不是所需的MyEnum[]。答案已更新;如dcastro的回答所示,在返回Enum.ParseYes或ToArray之前的.cast时错过了强制转换。确实如此。这两者都是可以接受的,只是归结为个人对清晰度的偏好或遵循的代码基编码标准/准则:-您正在创建一个对象[],而不是所需的MyEnum[]。答案已更新;如dcastro的回答所示,在返回Enum.ParseYes或ToArray之前的.cast时错过了强制转换。确实如此。这两者都是可以接受的,只是归结为个人对清晰度的偏好或遵循的代码基编码标准/指南:-
        MyEnum[] results2 = (from item in strArray
            select (MyEnum) Enum.Parse(typeof (MyEnum), item)).ToArray();