2010-10-13 14 views
12

Eventuali duplicati:
C#: How to enumerate an enum?Enum in C# e foreach

Ciao a tutti,

Ho un Enum

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

voglio foreach questo enum e creane una matrice di oggetti n questo formato

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

@closers: Duplicato di cui post? Ho cercato il mio problema in rete e sono finito qui con il primo risultato. Forse dovresti aggiungere il link al post "originale". –

+0

Forse duplicato di questo: http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum – KettuJKL

risposta

18

Bene, questo lo farebbe (supponendo NET 3.5):

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

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

o utilizzare un tipo anonimo:

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

Non hai davvero bisogno di quel '(AttributeType [])' :) – leppie

+1

@leppie: o è necessario o una chiamata a Cast, dato che Enum.GetValues ​​restituisce semplicemente Array. –

+0

Argh, hai ragione come al solito, stavo pensando (erroneamente) che sarebbe "IEnumerable " comunque ... (oops). – leppie