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();