2013-06-15 16 views
21

że mam następujące Enum Values ​​Konwersja Enum do listy

enum Language 
    { 
     CSharp= 0, 
     Java = 1, 
     VB = 2 

    } 

Chciałbym przekonwertować je na liście wartości (tj) { CSharp,Java,VB}.

Jak przekonwertować je na liście wartości?

+3

Spójrz na [Enum.GetValues] (http://msdn.microsoft.com/library/system.enum.getvalues.aspx). – Corak

Odpowiedz

31
Language[] result = (Language[])Enum.GetValues(typeof(Language)) 

będzie Ci swoje wartości, jeśli chcesz lista wyliczeń.

Jeśli chcesz listę imion, użyj tego:

string[] names = Enum.GetNames(typeof(Languages)); 
10

Gdybym zrozumieć swoje wymagania poprawnie, szukasz coś takiego

var enumList = Enum.GetValues(typeof(Language)).OfType<Language>().ToList(); 
+0

Dlaczego 'OfType () .ToList()', kiedy można po prostu rzucić go prosto do 'Languages ​​[]'? –

+0

@newStackExchangeInstance Yep masz rację –

0

Można użyć tego kodu

static void Main(string[] args) 
    { 
    enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri }; 

    Array arr = Enum.GetValues(typeof(Days)); 
    List<string> lstDays = new List<string>(arr.Length); 
    for (int i = 0; i < arr.Length; i++) 
    { 
     lstDays.Add(arr.GetValue(i).ToString()); 
    } 
    } 
+3

To zbyt skomplikowane. –

5

Jeśli chcesz przechowywać elementy enum na liście jako typ Język:

Enum.GetValues(typeof(Language)).Cast<Language>().ToList(); 

W przypadku, gdy chcesz przechowywać je jako ciąg:

Enum.GetValues(typeof(Language)).Cast<Language>().Select(x => x.ToString()).ToList(); 
Powiązane problemy