EDIT: Ой, я тоже пропустил тег 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); });
Оригинальный ответ
Два варианта:
Использование Enum.Parse и листинг в запросе LINQ:
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();
@Все, похоже, это не глупый вопрос. Спасибо за все быстрые ответы снова. Я буду практиковать любое из этих решений, просто использую его как учебный пример. –