Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET使用CompareTo排序顺序-结果不正确?_Vb.net_String_Sorting_Compare_Compareto - Fatal编程技术网

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

VB.NET使用CompareTo排序顺序-结果不正确?,vb.net,string,sorting,compare,compareto,Vb.net,String,Sorting,Compare,Compareto,我有一个很长的字符串值列表,我正试图在网格中进行排序。最初,默认的排序算法用于整个网格。然而,我最终不得不重写网格的排序,因为一些列需要特殊排序,网格不允许对特定列进行自定义排序。此处讨论的列不需要特殊排序,因此我仅使用CompareTo: Public Function Compare(ByVal p1 as MyObj, ByVal p2 as MyObj) As Integer Return p1.Description.CompareTo(p2.Description) End

我有一个很长的字符串值列表,我正试图在网格中进行排序。最初,默认的排序算法用于整个网格。然而,我最终不得不重写网格的排序,因为一些列需要特殊排序,网格不允许对特定列进行自定义排序。此处讨论的列不需要特殊排序,因此我仅使用CompareTo:

Public Function Compare(ByVal p1 as MyObj, ByVal p2 as MyObj) As Integer
    Return p1.Description.CompareTo(p2.Description)
End Function
比较默认的网格排序方法和我现在使用的CompareTo方法,我得到了完全相同的结果。但是,直接数据库查询的排序结果有所不同(根据我认为的情况,数据库结果是正确的)

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

示例1

排序结果:

  • 测试-A/A我的测试
  • 测试1000 A测试
  • TEST1000测试
  • 测试
  • 测试B/A我的测试
  • 预期结果:

  • 测试-A/A我的测试
  • 测试B/A我的测试
  • 测试1000 A测试
  • TEST1000测试
  • 测试
  • 示例2

    排序结果:

  • 测试-测试
  • 考验我
  • 测试-#1 A
  • 测试-#1 B
  • 预期结果:

  • 考验我
  • 测试-测试
  • 测试-#1 A
  • 测试-#1 B
  • 示例3

    排序结果:

  • 路易丝测试1
  • 路易丝测试2
  • 路易斯-测试1
  • 预期结果:

  • 路易斯-测试1
  • 路易丝测试1
  • 路易丝测试2
  • 以前有没有人遇到过这种情况,或者知道这里会发生什么?

    进行区分大小写、区分区域性的排序,因此撇号、连字符等字符不会显示严格的字符编码排序中会出现什么情况-这似乎是您所期望的


    考虑使用一个重载,使您可以指定为序号

    谢谢Jim!这正是我所需要的。最后我做了以下操作:
    String.CompareOrdinal(p1.Description,p2.Description)