2009-04-10 8 views
20

Cómo convertir todos los elementos de enum a string?Todos los elementos de Enum para la cadena (C#)

Supongamos que tengo:

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

Y lo que quiero archivo es algo así como:

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

marcar esta respuesta puede ser útil también: https://stackoverflow.com/a/12022617/1830909 – QMaster

Respuesta

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

Faltan las comas – Keltex

+0

Tienes que recortar la última coma – Yargicx

11

Hay que hacer algo como esto:

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

O en Linq:

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

Estaba pensando en la versión de linq similar, me ganaste. +1 – Vivek

+1

¡Por favor, no abuse de StringBuilder así! – Randolpho

+1

Randolpho ¿qué pasa con el código de stringbuilder? ¿Qué abuso? –

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

Aunque respuesta @ Moose es la mejor, me sugieren guardar en caché el valor, ya que puede que esté utilizando con frecuencia, pero es 100% no va a cambiar durante la ejecución - a menos que esté modificar y volver a compilar la enumeración. :)

así:

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

Una manera simple y genérica para convertir una enumeración a algo que se puede interactuar:

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()); 
} 

y luego:

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