2013-06-15 12 views
21

sagen, ich habe die folgende Enum-WerteConvert Enum zur Liste

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

    } 

Ich würde sie zur Liste der Werte konvertieren möchten (d) { CSharp,Java,VB}.

Wie sie zu einer Liste von Werten konvertieren?

+3

Werfen sie einen Blick auf [Enum.GetValues] (http://msdn.microsoft.com/library/system.enum.getvalues.aspx). – Corak

Antwort

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

werden Sie Ihre Werte erhalten, wenn Sie eine wollen Liste der Enums.

Wenn Sie eine Liste der Namen möchten, verwenden Sie diese:

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

Wenn ich Ihre Anforderung richtig verstehe, Sie suchen nach etwas, wie diese

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

Warum 'OfType () .ToList() ', wenn Sie es einfach direkt auf ein' Languages ​​[] 'übertragen können? –

+0

@newStackExchangeInstance Ja, Sie sind richtig –

0

können Sie diesen Code verwenden

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

Das ist viel zu kompliziert. –

5

Wenn Sie Ihre Enum-Elemente in der Liste als Sprachtyp gespeichert werden soll:

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

Im Fall, dass Sie speichern sie als string:

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