【发布时间】:2013-02-15 17:37:37
【问题描述】:
按字母顺序对 typeof(EnumType) 进行排序的有效方法是什么?
枚举值的索引是非顺序的,但按字母顺序排序。 (即苹果 = 5,香蕉 = 2,哈密瓜 = 3)
暂时实例化没问题。
最终我需要所选特定枚举值的索引代码。
我问是因为我想出的方法看起来不是最好的:
Array tmp = Enum.GetValues(typeof(EnumType));
string[] myenum = tmp.OfType<object>().Select(o => o.ToString()).ToArray();
Array.Sort(myenum);
int enum_code = (int)Enum.Parse(typeof(EnumType), myenum.GetValue((int)selected_index).ToString());
string final_code = enum_code.ToString());
【问题讨论】:
-
您可以使用
OrderBy(o => o.ToString())简化第 2 行和第 3 行。但是,我不是 100% 清楚您要在这里实现什么。 -
因为选择的索引不直接映射创建的Array tmp的索引值。 (选定的索引是基于字母顺序的,而 tmp 创建一个索引顺序为增量的数组,我需要使用 selected_index 变量然后再检索..