2009-04-10 30 views
20

Làm thế nào để chuyển đổi tất cả các phần tử từ enum thành chuỗi?Tất cả các mục Enum thành chuỗi (C#)

Giả sử tôi có:

public enum LogicOperands { 
     None, 
     Or, 
     And, 
     Custom 
} 

Và những gì tôi muốn lưu trữ là một cái gì đó như:

string LogicOperandsStr = LogicOperands.ToString(); 
// expected result: "None,Or,And,Custom" 
+0

Kiểm tra câu trả lời này cũng có thể hữu ích: https://stackoverflow.com/a/12022617/1830909 – QMaster

Trả lời

56
string s = string.Join(",",Enum.GetNames(typeof(LogicOperands))); 
0
foreach (string value in Enum.GetNames(typeof(LogicOoperands)) 
{ 
    str = str + "," + value; 
} 
+0

Bạn đang thiếu dấu phẩy – Keltex

+0

Bạn phải cắt các dấu phẩy cuối cùng – Yargicx

11

Bạn phải làm một cái gì đó như thế này:

var sbItems = new StringBuilder() 
foreach (var item in Enum.GetNames(typeof(LogicOperands))) 
{ 
    if(sbItems.Length>0) 
     sbItems.Append(','); 
    sbItems.Append(item); 
} 

Hoặc trong LINQ:

var list = Enum.GetNames(typeof(LogicOperands)).Aggregate((x,y) => x + "," + y); 
+1

Tôi đã nghĩ về phiên bản LINQ tương tự, bạn đã đánh bại tôi. +1 – Vivek

+1

Xin đừng lạm dụng StringBuilder như thế! – Randolpho

+1

Randolpho có gì sai với codebuilder? Lạm dụng gì? –

2
string LogicOperandsStr 
    = Enum.GetNames(typeof(LogicOoperands)).Aggregate((current, next)=> 
                 current + "," + next); 
1

Mặc dù câu trả lời @ Moose là tốt nhất, tôi đề nghị bạn bộ nhớ cache giá trị, vì bạn có thể sử dụng nó thường xuyên, nhưng đó là 100% không thay đổi trong quá trình thực - trừ khi bạn sửa đổi và biên dịch lại enum. :)

Giống như vậy:

public static class LogicOperandsHelper 
{ 
    public static readonly string OperandList = 
    string.Join(",", Enum.GetNames(typeof(LogicOperands))); 
} 
0

Một cách đơn giản và tổng quát để chuyển đổi một enum để một cái gì đó bạn có thể tương tác:

public static Dictionary<int, string> ToList<T>() where T : struct 
{ 
    return ((IEnumerable<T>)Enum.GetValues(typeof(T))).ToDictionary(item => Convert.ToInt32(item), item => item.ToString()); 
} 

và sau đó:

var enums = EnumHelper.ToList<MyEnum>(); 
Các vấn đề liên quan