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

时间:2019-03-16 14:13:49

标签: .net generics enums

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

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

我在编译时不知道枚举类型,因此我无法在Cast(Of...)上执行Array,然后再使用OrderBy扩展名。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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