2010-10-13 6 views
12

Possible en double:
C#: How to enumerate an enum?Enum en C# et foreach

Salut à tous,

J'ai un Enum

public enum AttributeType 
    { 
     TextField = 1, 
     TextArea = 2, 
     Date = 4, 
     Boolean = 8 
    } 

Je veux foreach ce ENUM et en faire un tableau d'objets i n ce format

object data = new object[] 
{ 
    // new object[] { 1,"TextField"} 
    new object[] { enumValue, enumText} 
}; 
+0

@closers: double dont la poste? J'ai cherché mon problème sur le net et terminé ici avec le premier résultat. Peut-être que vous devriez ajouter un lien vers le message "original". –

+0

Peut-être dupliquer de ceci: http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum – KettuJKL

Répondre

18

Eh bien, ce serait le faire (en supposant .NET 3.5):

var allValues = (AttributeType[]) Enum.GetValues(typeof(AttributeType)); 

var array = allValues.Select(value => new object[] { value, value.ToString() }) 
        .ToArray(); 

ou utiliser un type anonyme:

var array = allValues.Select(value => { Value = value, Name = value.ToString() }) 
        .ToArray(); 
+0

Vous n'avez pas vraiment besoin que '(AttributeType [])' :) – leppie

+1

@leppie: Vous soit besoin de cela ou un appel à Cast, étant donné que Enum.GetValues ​​retourne juste Array. –

+0

Argh, vous avez raison comme d'habitude, je pensais (incorrectement) que ce serait «IEnumerable » de toute façon ... (oups). – leppie