[英]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.