0

按字母顺序排序 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());
4

2 回答 2

6

您可以使用 Linq 编写更紧凑和可维护的代码。除非您在高性能应用程序的内部循环中执行此操作,否则我怀疑 Linq 与您的原始代码与任何其他可能的实现的速度是否会很重要:

var sorted = (from e in Enum.GetValues(typeof(EnumType)).Cast<EnumType>()
              orderby e.ToString() select e).ToList();
于 2013-02-15T17:40:48.200 回答
0

鉴于该错误,一个更费力(且与 .net 2 兼容)的解决方案是;

SortedDictionary<string, MyEnumType> list = new SortedDictionary<string, MyEnumType>();
foreach (Enum e in Enum.GetValues(typeof(MyEnumType)))
{
    list.Add(e.ToString(), (MyEnumType)e);
}

检索枚举;

MyEnumType temp = list["SomeValue"];
于 2013-02-15T17:47:52.983 回答