2010-10-13 90 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