我有一长串字符串值,我试图在网格中排序。最初,默认排序算法用于整个网格。但是,我最终不得不重写网格的排序,因为有几列需要特殊排序,并且网格不允许对特定列进行自定义排序。这里讨论的列不需要特殊的排序,所以我只使用了CompareTo:
Public Function Compare(ByVal p1 as MyObj, ByVal p2 as MyObj) As Integer
Return p1.Description.CompareTo(p2.Description)
End Function
比较默认网格排序方法和我现在使用CompareTo的方法,我得到完全相同的结果。但是,直接数据库查询的排序结果不同(数据库结果根据我认为应该是正确的)。
以下是我认为不正确的排序结果的三个例子:
示例1
排序结果:
预期结果:
示例2
排序结果:
预期结果:
示例3
排序结果:
预期结果:
之前有没有人碰过这个或者有任何想法可以在这里发生什么?
答案 0 :(得分:2)
CompareTo执行区分大小写,对文化敏感的排序,因此像撇号,连字符等字符不会显示严格字符编码排序的位置 - 这似乎是您所期待的。 / p>
考虑使用Compare的重载,可以将StringComparison指定为序数