EDYCJA: Ups, również pominięto tag C# 2. Zostawię inne opcje dostępne poniżej, ale:
W języku C# 2, jesteś prawdopodobnie najlepiej używając List<T>.ConvertAll
:
List<MyEnumType> enumList = stringList.ConvertAll(delegate(string x) {
return (MyEnumType) Enum.Parse(typeof(MyEnumType), x); });
lub z Unconstrained Melody:
List<MyEnumType> enumList = stringList.ConvertAll(delegate(string x) {
return Enums.ParseName<MyEnumType>(x); });
Zauważ, że to robi załóżmy, że na początku masz List<string>
, który jest poprawny dla twojego tytułu, ale nie dla ciała w twoim pytaniu. Na szczęście istnieje odpowiednik statyczne Array.ConvertAll
metoda, która trzeba by użyć takiego:
MyEnumType[] enumArray = Array.ConvertAll(stringArray, delegate (string x) {
return (MyEnumType) Enum.Parse(typeof(MyEnumType), x); });
Original odpowiedź
dwie opcje:
Zastosowanie Enum.Parse i rzutowanie w zapytaniu LINQ:
var enumList = stringList
.Select(x => (MyEnumType) Enum.Parse(typeof(MyEnumType), x))
.ToList();
lub
var enumList = stringList.Select(x => Enum.Parse(typeof(MyEnumType), x))
.Cast<MyEnumType>()
.ToList();
@All, Wygląda na to, że to nie jest głupie pytanie. Dziękuję za wszystkie szybkie odpowiedzi ponownie. Będę ćwiczyć którekolwiek z rozwiązań, po prostu potraktuj to jako mój przypadek nauki. –