编辑:糟糕,我也错过了C#2标签。 我将在下面保留其他选项,但是:
在C# 2中,您可能最好使用List<T>.ConvertAll
:
List<MyEnumType> enumList = stringList.ConvertAll(delegate(string x) {
return (MyEnumType) Enum.Parse(typeof(MyEnumType), x); });
或者使用Unconstrained Melody:
List<MyEnumType> enumList = stringList.ConvertAll(delegate(string x) {
return Enums.ParseName<MyEnumType>(x); });
请注意,这假定您确实有一个List<string>
可用,这适用于标题但不适用于您的问题正文。幸运的是,有一个相等的静态Array.ConvertAll
方法,您可以像这样使用:
MyEnumType[] enumArray = Array.ConvertAll(stringArray, delegate (string x) {
return (MyEnumType) Enum.Parse(typeof(MyEnumType), x); });
两个选项:
var enumList = stringList
.Select(x => (MyEnumType) Enum.Parse(typeof(MyEnumType), x))
.ToList();
或
var enumList = stringList.Select(x => Enum.Parse(typeof(MyEnumType), x))
.Cast<MyEnumType>()
.ToList();
var enumList = stringList.Select(x => Enums.ParseName<MyEnumType>(x))
.ToList();