Все элементы Enum в строку (C #) - PullRequest
23 голосов
/ 10 апреля 2009

Как преобразовать все элементы из перечисления в строку?

Предположим, у меня есть:

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

А то, что я хочу заархивировать, выглядит примерно так:

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

Ответы [ 6 ]

64 голосов
/ 10 апреля 2009
string s = string.Join(",",Enum.GetNames(typeof(LogicOperands)));
12 голосов
/ 10 апреля 2009

Вы должны сделать что-то вроде этого:

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

Или в Линк:

var list = Enum.GetNames(typeof(LogicOperands)).Aggregate((x,y) => x + "," + y);
2 голосов
/ 10 апреля 2009
string LogicOperandsStr 
     = Enum.GetNames(typeof(LogicOoperands)).Aggregate((current, next)=> 
                                                       current + "," + next);
1 голос
/ 10 апреля 2009

Хотя ответ @ Moose является лучшим, я предлагаю вам кэшировать значение, поскольку вы можете часто его использовать, но вряд ли оно изменится во время выполнения на 100% - если только вы не изменяете и не перекомпилируете перечисление. :)

Вроде так:

public static class LogicOperandsHelper
{
  public static readonly string OperandList = 
    string.Join(",", Enum.GetNames(typeof(LogicOperands)));
}
0 голосов
/ 12 сентября 2014

Простой и универсальный способ преобразования перечисления во что-то, с чем вы можете взаимодействовать:

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

и затем:

var enums = EnumHelper.ToList<MyEnum>();
0 голосов
/ 10 апреля 2009
foreach (string value in Enum.GetNames(typeof(LogicOoperands))
{
    str = str + "," + value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...