2010-10-13 61 views
12

可能重复:
C#: How to enumerate an enum?枚举在C#和foreach

大家好,

我有一个枚举

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

我想的foreach此枚举并创建它的对象数组n这个格式

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

@closers:该职位的重复?我在网上搜索了我的问题,并以第一个结果结束了。也许你应该添加链接到“原始”文章。 – 2014-10-13 09:01:09

+0

可能重复此:http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum – KettuJKL 2017-02-15 12:03:41

回答

18

那么,这将做到这一点(假设.NET 3.5):

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

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

或使用匿名类型:

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

你真的不需要'(AttributeType [])':) – leppie 2010-10-13 10:32:31

+1

@leppie:你要么需要或调用Cast,因为Enum.GetValues只是返回Array。 – 2010-10-13 10:58:30

+0

阿格,你是对的,像往常一样,我想(不正确)它会'IEnumerable '反正...(哎呀)。 – leppie 2010-10-13 11:29:57