簡體   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