2010-10-13 36 views
12

thể trùng lặp:
C#: How to enumerate an enum?Enum trong C# và foreach

Hi All,

Tôi có một Enum

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

Tôi muốn foreach enum này và tạo một mảng đối tượng của nó n định dạng này

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

@closers: Duplicate trong đó bài? Tôi đã tìm kiếm sự cố của mình trên mạng và kết thúc ở đây với kết quả đầu tiên. Có thể bạn nên thêm liên kết vào bài đăng "gốc". –

+0

Có thể trùng lặp của điều này: http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum – KettuJKL

Trả lời

18

Vâng, điều này sẽ làm điều đó (giả sử .NET 3.5):

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

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

hoặc sử dụng một loại vô danh:

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

Bạn không thực sự cần rằng '(AttributeType [])' :) – leppie

+1

@leppie: Bạn hoặc là cần điều đó hoặc một cuộc gọi đến Cast, cho rằng Enum.GetValues ​​chỉ trả về Array. –

+0

Argh, bạn đúng như thường lệ, tôi đã suy nghĩ (không chính xác) nó sẽ là 'IEnumerable 'anyways ... (oops). – leppie