代码之家  ›  专栏  ›  技术社区  ›  Nostromo

如何在不知道枚举本身的情况下对enum.getValues的结果进行排序

  •  0
  • Nostromo  · 技术社区  · 6 年前

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

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

    我在编译时不知道枚举类型,因此无法执行 Cast(Of...) 数组 并使用 OrderBy 之后再延期。

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

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

    这个 values 数组包含零、一、二,我正在寻找一种方法来获得一、二、零(按字母顺序)。记住,你不知道 TestEnum 在编译时,只有变量 枚举类型 .

    0 回复  |  直到 6 年前
        1
  •  0
  •   Nostromo    6 年前

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

    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