У меня есть простая процедура, чтобы найти следующий объект на основе свойства имени в неупорядоченной коллекции объектов.Я просматриваю коллекцию и собираю все имена в List(of String)
, добавляя любые имена, >
моего текущего имени, которые должны дать список всего, что следует за текущим ключом.Затем я сортирую список, используя метод .Sort()
по умолчанию для List(of String)
, и беру первый элемент в списке, который должен быть моим следующим элементом.Я делаю наоборот, чтобы найти предыдущий элемент, добавляю все элементы <
мое текущее имя, сортирую и беру последний элемент в списке.
Однако этот метод пропускает некоторые элементы.Например, у меня есть предметы с именами 1210, 1210-ADA и 1210_ADA_DB.Используя этот метод, получение следующего элемента пропускает средний элемент 1210-ADA и находит 1210_ADA_DB, но поиск предыдущего элемента, кажется, работает.
Если мой процесс правильный, мое единственное объяснение состоит в том, что операторы <
и >
сравниваются иначе, чем метод .Sort()
.Это правда?В чем различия?
Код для поиска следующего предмета:
Dim Key As String = Name
Dim NameList As New List(Of String)
For Each obj As T In Collection
Dim ObjKey As String = Obj.Key
If ObjKey > Key Then
NameList.Add(ObjKey)
End If
Next
If NameList.Count = 0 Then Return Nothing
NameList.Sort()
Dim NextKey As String = NameList.First