-2

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

编辑 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 上找到我的问题的答案。我想也许其中一种排序重载会很有用,但看起来不是这样。

4

3 回答 3

0

您需要编写自己的类来实现IComparer(Of String). Sort()使用此接口比较字符串对并找到它们所属的顺序。

于 2013-02-06T19:42:37.713 回答
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) 
于 2013-02-06T20:04:09.663 回答
0
etaTimeIntSort = etaTimeSorted.ConvertAll(Function(str) Int32.Parse(str))
etaTimeIntSort.Sort()
etaTimeSorted = etaTimeIntSort.ConvertAll(Function(int) Convert.ToString(int))

将数组转换为 int,排序,然后转换回字符串,这样我就可以插入我的“空白”项目。

于 2013-02-07T14:41:55.237 回答