Если вы хотите, чтобы тип имел режим сортировки по умолчанию, вам необходимо реализовать интерфейсы IComparable
и / или IComparable(Of T)
.Это считается хорошей практикой для реализации обоих.Например,
Public Structure DateRange
Implements IComparable, IComparable(Of DateRange)
Public ReadOnly Property StartDate As Date
Public ReadOnly Property EndDate As Date
Public Sub New(startDate As Date, endDate As Date)
Me.StartDate = startDate
Me.EndDate = endDate
End Sub
Public Overrides Function ToString() As String
Return $"{StartDate} - {EndDate}"
End Function
Public Function CompareTo(obj As Object) As Integer Implements IComparable.CompareTo
Return CompareTo(DirectCast(obj, DateRange))
End Function
Public Function CompareTo(other As DateRange) As Integer Implements IComparable(Of DateRange).CompareTo
'Sort by start date by default.
Dim result = StartDate.CompareTo(other.StartDate)
If result = 0 Then
'Start dates are the same so sort by end date.
result = EndDate.CompareTo(other.EndDate)
End If
Return result
End Function
End Structure
Обратите внимание, что эта реализация использует реализацию, предоставляемую типом Date
, для выполнения тяжелой работы.
Подробнее о сортировке списков можно прочитать здесь .