Чтобы ответить на заданный вопрос, вы можете вызвать перегрузку Sort
, которая принимает делегата Comparison(Of T)
, и предоставить лямбду, которая сравнивает Strings
как Dates
:
list.Sort(Function(s1, s2)
Dim d1 As Date
Dim d2 As Date
If Date.TryParse(s1, d1) AndAlso Date.TryParse(s2, d2) Then
'Both values convert so compare chronologically.
Return d1.CompareTo(d2)
End If
'At least one value does not convert so consider them equivalent.
Return 0
End Function)
Топреобразует каждое значение в фактическое Date
для целей сравнения.Если вы хотите сделать что-то конкретное, когда успешно преобразуется только одно значение, например, недопустимые значения всегда идут последними, вы также можете реализовать это.
Тем не менее, если у вас нет очень веских причин для хранения дат в Strings
вы действительно должны использовать Date
значения в первую очередь.