日付・時間の新しい順に並べ替えるには、次の例のように並べ替え順序を通常と逆の順序に定義したメソッドを用意してからソートします。 逆順(降順)でのソート方法については基本型のソートと昇順・降順でのソート §.降順でのソートを参照してください。
日付型を日付・時間の新しい順でソートする
Imports System
Class Sample
' DateTimeを通常と逆の順に並べ替えるためのメソッド
Shared Function CompareDateTimeReverseOrder(ByVal x As DateTime, ByVal y As DateTime) As Integer
' 逆順で比較
Return DateTime.Compare(y, x)
' 次のようにしても同じ
'Return -DateTime.Compare(x, y)
'Return y.CompareTo(x)
End Function
Shared Sub Main()
Dim dateTimeArray As DateTime() = New DateTime() { _
New DateTime(2000, 1, 1, 0, 0, 0), _
New DateTime(2000, 1, 1, 12, 0, 0), _
New DateTime(2000, 1, 2, 0, 0, 0), _
New DateTime(2000, 2, 1, 0, 0, 0), _
New DateTime(2001, 1, 1, 0, 0, 0) _
}
' デフォルトの順にソート
Array.Sort(dateTimeArray)
Console.WriteLine("default order")
For Each val As DateTime In dateTimeArray
Console.WriteLine("{0:f}", val)
Next
' 逆順にソート
Array.Sort(dateTimeArray, AddressOf CompareDateTimeReverseOrder)
Console.WriteLine("reverse order")
For Each val As DateTime In dateTimeArray
Console.WriteLine("{0:f}", val)
Next
End Sub
End Class
実行結果
default order 2000年1月1日 0:00 2000年1月1日 12:00 2000年1月2日 0:00 2000年2月1日 0:00 2001年1月1日 0:00 reverse order 2001年1月1日 0:00 2000年2月1日 0:00 2000年1月2日 0:00 2000年1月1日 12:00 2000年1月1日 0:00