繁体   English   中英

如何在不知道Enum本身的情况下对Enum.GetValues的结果进行排序

[英]How to sort the result of Enum.GetValues without knowing the Enum itself

我正在寻找一种通过枚举值名称对[Enum].GetValues(enumType) (这是一个Array )的结果进行排序的方法。

Public Enum TestEnum As Integer
    Zero = 0
    One = 1
    Two = 2
End Enum

我不知道在编译时的枚举类型,所以我不能在Array上执行Cast(Of...) ,然后再使用OrderBy扩展。

我在运行时只有一个Type变量(称为enumType )。

Dim enumType As Type = GetType(TestEnum)   'just for testing
Dim values As Array = [Enum].GetValues(enumType)

values数组包含{Zero,One,Two}(零,一,二),我正在寻找一种方法来达到{One,Two,Zero}(字母顺序)。 记住,您在编译时不了解TestEnum ,只有变量enumType

我希望有一个更优雅的解决方案,但这可以做到:

Dim enumType As Type = GetType(TestEnum)
Dim names As String() = [Enum].GetNames(enumType)
Dim values As Array = names.OrderBy(Of String)(Function(x As String) x) _
                           .Select(Of Object)((Function(x As String) [Enum].Parse(enumType, x))) _
                           .ToArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM