列挙体の値をメンバ名の順にソートする 言語: VB C# 列挙体をメンバ名の順(値に割り当てられている名前の順)に並べるには、次のように並べ替え順序を定義する必要があります。 ただ、次の例にあるように、列挙体ではメンバ名で定義されていない値も設定できるため、そういった値をどう取り扱うかについての考慮も必要となってきます。 列挙体の値をメンバ名の順にソートする すべて選択してコピー ダウンロード 行番号を表示する Imports System Enum Number MinusTwo = -2 MinusOne = -1 Zero = 0 One = 1 Two = 2 End Enum Class Sample ' 列挙体の値を比較するメソッド Shared Function CompareNumber(ByVal x As Number, ByVal y As Number) As Integer ' 列挙体の値を文字列(メンバ名)に変換 Dim xx As String = x.ToString("G") Dim yy As String = y.ToString("G") ' 文字列として比較した結果を返す Return String.Compare(xx, yy) End Function Shared Sub Main() Dim arr As Number() = New Number() { _ Number.Zero, Number.One, Number.MinusOne, Number.Two, Number.MinusTwo, _ CType(3, Number) _ } Array.Sort(arr, AddressOf CompareNumber) For Each val As Number In arr Console.WriteLine("{0,-8:G} ({0:D})", val) Next End Sub End Class 実行結果 3 (3) MinusOne (-1) MinusTwo (-2) One (1) Two (2) Zero (0) 列挙体の書式・文字列化については列挙体の基本と操作や書式指定子を参照してください。 関連するページ 日付型の値のソート順序 日付型を日付・時間の新しい順でソートする 列挙体の値のソート順序