【发布时间】:2011-09-28 14:59:44
【问题描述】:
我有一个简单的例程来根据无序对象集合中的名称属性查找下一个对象。我浏览了集合并收集了List(of String) 中的所有名称,添加了我当前名称> 的任何名称,这应该列出当前键之后的所有内容。然后我使用List(of String) 上的默认.Sort() 方法对列表进行排序,并获取列表中的第一项,这应该是我的下一项。我反向查找前一项,添加所有项目<我的当前姓名,排序,然后取出列表中的最后一项。
但是,此方法会跳过某些项目。例如,我有名为 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
【问题讨论】:
-
与其描述您的代码,不如发布您的代码?
标签: .net vb.net sorting string-comparison