2009-04-10 5 views
20

Wie konvertiert man alle Elemente von Enum zu String?Alle Enum Elemente zu string (C#)

Angenommen, ich habe:

public enum LogicOperands { 
     None, 
     Or, 
     And, 
     Custom 
} 

Und was will ich Archiv ist so etwas wie:

string LogicOperandsStr = LogicOperands.ToString(); 
// expected result: "None,Or,And,Custom" 
+0

diese Antwort prüfen kann auch nützlich sein: https://stackoverflow.com/a/12022617/1830909 – QMaster

Antwort

56
string s = string.Join(",",Enum.GetNames(typeof(LogicOperands))); 
0
foreach (string value in Enum.GetNames(typeof(LogicOoperands)) 
{ 
    str = str + "," + value; 
} 
+0

Sie fehlen die Kommata – Keltex

+0

Du musst das letzte Komma trimmen – Yargicx

11

Sie haben so etwas zu tun:

var sbItems = new StringBuilder() 
foreach (var item in Enum.GetNames(typeof(LogicOperands))) 
{ 
    if(sbItems.Length>0) 
     sbItems.Append(','); 
    sbItems.Append(item); 
} 

Oder in Linq:

var list = Enum.GetNames(typeof(LogicOperands)).Aggregate((x,y) => x + "," + y); 
+1

Ich dachte an die ähnliche linq Version, du hast mich geschlagen. +1 – Vivek

+1

Bitte missbrauchen Sie StringBuilder nicht so! – Randolpho

+1

Randolpho was ist falsch mit dem Stringbuilder-Code? Was für ein Missbrauch? –

2
string LogicOperandsStr 
    = Enum.GetNames(typeof(LogicOoperands)).Aggregate((current, next)=> 
                 current + "," + next); 
1

Obwohl @ Moose Antwort ist die beste, empfehle ich Ihnen den Wert zwischenzuspeichern, da Sie sie häufig verwenden könnten, aber es ist 100% unwahrscheinlich während der Ausführung ändern - es sei denn, du bist Ändern und Neukompilieren der Enumeration. :)

Wie so:

public static class LogicOperandsHelper 
{ 
    public static readonly string OperandList = 
    string.Join(",", Enum.GetNames(typeof(LogicOperands))); 
} 
0

Eine einfache und generische Art und Weise eine Enum, um etwas zu konvertieren können Sie interagieren:

public static Dictionary<int, string> ToList<T>() where T : struct 
{ 
    return ((IEnumerable<T>)Enum.GetValues(typeof(T))).ToDictionary(item => Convert.ToInt32(item), item => item.ToString()); 
} 

und dann:

var enums = EnumHelper.ToList<MyEnum>();