编辑:它实际上是一个字符串数组。我想如果我在排序之前转换为整数它应该工作...
编辑2:我已经将数组转换为Int,所以我可以按Int排序,现在我只需要弄清楚如何使它与数组中的一个实际字符串一起工作。
Dim test As IList(Of Integer) = etaTimeSorted.ConvertAll(Function(str) Int32.Parse(str))
如何对24小时的数组进行排序?当我对它们进行排序时,它们实际上只是数字(0945而不是09:45)。我正在使用vb.net sort()方法:
array.sort()
它的排序方式如下:
0001
0010
0100
1000
0102
1100
0112
1130
这让我疯了。我觉得我很久以前就应该在Google上找到问题的答案了。我想也许其中一个重载重载会有用,但看起来并不那样。
答案 0 :(得分:0)
您需要编写自己的实现IComparer(Of String)
的类。
Sort()
使用此接口比较字符串对并找到它们所属的顺序。
答案 1 :(得分:0)
可以使用LINQ来做,但我不知道如何在VB中执行此操作,抱歉:
nums.Select (n => new { Hour = n.Substring(0,2), Minute = n.Substring(2)}).OrderBy (n => n.Hour).ThenBy (n => n.Minute ).Select (n => n.Hour + n.Minute)
答案 2 :(得分:0)
etaTimeIntSort = etaTimeSorted.ConvertAll(Function(str) Int32.Parse(str))
etaTimeIntSort.Sort()
etaTimeSorted = etaTimeIntSort.ConvertAll(Function(int) Convert.ToString(int))
将数组转换为int,排序,然后转换回字符串,这样我就可以插入“Blank”项。