24小时时间排序

时间:2013-02-06 19:40:13

标签: vb.net sorting time

编辑:它实际上是一个字符串数组。我想如果我在排序之前转换为整数它应该工作...

编辑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上找到问题的答案了。我想也许其中一个重载重载会有用,但看起来并不那样。

3 个答案:

答案 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”项。