769 Stimmen

Wie konvertiere ich eine Aufzählung in eine Liste in C#?

Gibt es eine Möglichkeit zur Konvertierung eines enum zu einer Liste, die alle Optionen der Aufzählung enthält?

19voto

Tyler Punkte 1044

Sehr einfache Antwort

Hier ist eine Eigenschaft, die ich in einer meiner Anwendungen verwende

public List<string> OperationModes
{
    get
    {
       return Enum.GetNames(typeof(SomeENUM)).ToList();
    }
}

6voto

jenson-button-event Punkte 17193

Hier etwas Code, um die Werte in eine Liste zu bekommen, die die Aufzählung in eine lesbare Form für den Text umwandelt

public class KeyValuePair
  {
    public string Key { get; set; }

    public string Name { get; set; }

    public int Value { get; set; }

    public static List<KeyValuePair> ListFrom<T>()
    {
      var array = (T[])(Enum.GetValues(typeof(T)).Cast<T>());
      return array
        .Select(a => new KeyValuePair
          {
            Key = a.ToString(),
            Name = a.ToString().SplitCapitalizedWords(),
            Value = Convert.ToInt32(a)
          })
          .OrderBy(kvp => kvp.Name)
         .ToList();
    }
  }

und die unterstützende System.String-Erweiterungsmethode:

/// <summary>
/// Split a string on each occurrence of a capital (assumed to be a word)
/// e.g. MyBigToe returns "My Big Toe"
/// </summary>
public static string SplitCapitalizedWords(this string source)
{
  if (String.IsNullOrEmpty(source)) return String.Empty;
  var newText = new StringBuilder(source.Length * 2);
  newText.Append(source[0]);
  for (int i = 1; i < source.Length; i++)
  {
    if (char.IsUpper(source[i]))
      newText.Append(' ');
    newText.Append(source[i]);
  }
  return newText.ToString();
}

6voto

Claudiu Constantin Punkte 1968

Ich habe mir immer eine Liste von enum Werte wie diese:

Array list = Enum.GetValues(typeof (SomeEnum));

5voto

Kiarash Punkte 1511
public class NameValue
{
    public string Name { get; set; }
    public object Value { get; set; }
}

public class NameValue
{
    public string Name { get; set; }
    public object Value { get; set; }
}

public static List<NameValue> EnumToList<T>()
{
    var array = (T[])(Enum.GetValues(typeof(T)).Cast<T>()); 
    var array2 = Enum.GetNames(typeof(T)).ToArray<string>(); 
    List<NameValue> lst = null;
    for (int i = 0; i < array.Length; i++)
    {
        if (lst == null)
            lst = new List<NameValue>();
        string name = array2[i];
        T value = array[i];
        lst.Add(new NameValue { Name = name, Value = value });
    }
    return lst;
}

Convert Enum In eine Liste umwandeln mehr Informationen verfügbar aquí .

5voto

Shyam sundar shah Punkte 2331
Language[] result = (Language[])Enum.GetValues(typeof(Language))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X