2010-10-13 13 views
12

Duplicar posibles:
C#: How to enumerate an enum?Enum en C# y foreach

Hola a todos,

que tienen una enumeración

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

Quiero foreach esta enumeración y hacer una matriz de objetos de ella i n este formato

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

@closers: Duplicado de los cuales puesto? Busqué mi problema en la red y terminé aquí con el primer resultado. Tal vez deberías agregar un enlace a la publicación "original". –

+0

Posiblemente duplicado de esto: http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum – KettuJKL

Respuesta

18

Bueno, esto lo haría (suponiendo .NET 3.5):

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

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

o usar un tipo anónimo:

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

Realmente no necesita eso '(AttributeType [])' :) – leppie

+1

@leppie: Usted tampoco necesita eso o una llamada a Cast, dado que Enum.GetValues ​​simplemente devuelve Array. –

+0

Argh, tienes razón, como siempre, estaba pensando (incorrectamente) que sería 'IEnumerable ' de todos modos ... (uy). – leppie