我未能转换 List<string>
至 List<myEnumType>
.我不知道为什么?
string Val = it.Current.Value.ToString(); // works well here
List<myEnumType> ValList = new List<myEnumType>(Val.Split(',')); // compile failed
原因myEnumType
类型定义为字符串枚举类型,
public enum myEnumType
{
strVal_1,
strVal_2,
strVal_3,
}
有什么问题吗?感谢您的回复。
最佳答案
编辑:糟糕,我也错过了 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); });
原始答案
两种选择:
在 LINQ 查询中使用 Enum.Parse 和强制转换:
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();
使用我的 Unconstrained Melody项目:
var enumList = stringList.Select(x => Enums.ParseName<MyEnumType>(x)) .ToList();
关于c# - 如何将 List<string> 转换为 List<myEnumType>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426537/