首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB.NET排序顺序使用CompareTo -不正确的结果?

VB.NET排序顺序使用CompareTo -不正确的结果?
EN

Stack Overflow用户
提问于 2012-08-14 21:31:05
回答 1查看 1.4K关注 0票数 2

我有一个很长的字符串值列表,我试图在网格中排序。最初,默认排序算法用于整个网格。但是,我不得不重写网格的排序,因为有几个列需要特殊的排序,而且网格不允许对特定列进行自定义排序。这里讨论的列不需要特殊排序,所以我只使用了CompareTo:

代码语言:javascript
复制
Public Function Compare(ByVal p1 as MyObj, ByVal p2 as MyObj) As Integer
    Return p1.Description.CompareTo(p2.Description)
End Function

比较默认的网格排序方法和我现在使用的与CompareTo的方法,我得到了完全相同的结果。但是,直接数据库查询的排序结果不同(根据我认为应该是什么,数据库结果是正确的)。

以下是我认为不正确的排序结果的三个例子:

示例1

排序结果:

  1. 测试- A/A我的测试
  2. TEST1000 A试验
  3. TEST1000测试
  4. TESTR A试验
  5. 测试-B/A我的测试

预期结果:

  1. 测试- A/A我的测试
  2. 测试-B/A我的测试
  3. TEST1000 A试验
  4. TEST1000测试
  5. TESTR A试验

示例2

排序结果:

  1. 测试-测试
  2. 测试ME
  3. 测试-#1 A
  4. 试验-#1 B

预期结果:

  1. 测试ME
  2. 测试-测试
  3. 测试-#1 A
  4. 试验-#1 B

示例3

排序结果:

  1. 路易丝试验1
  2. 路易丝试验2
  3. 路易-试验1

预期结果:

  1. 路易-试验1
  2. 路易丝试验1
  3. 路易丝试验2

以前有没有人遇到过这种情况,或者有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-14 22:35:25

CompareTo进行区分大小写、区分区域性的排序,因此像撇号、连字符等字符不会显示在严格的字符编码排序中的位置--这似乎是您所期望的。

考虑使用比较的重载,使您可以将StringComparison指定为序号

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11961053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档