-2

編集:実際には文字列の配列です。ソートする前に整数に変換すればうまくいくはずです...

編集 2: Int に変換する配列を取得したので、Int で並べ替えることができます。配列内の実際の文字列で動作させる方法を理解する必要があります。

Dim test As IList(Of Integer) = etaTimeSorted.ConvertAll(Function(str) Int32.Parse(str))

24 時間の配列を並べ替えるにはどうすればよいですか? それらを並べ替えると、実際には単なる数字です (09:45 ではなく 0945)。私は vb.net sort() メソッドを使用しています:

array.sort()

そして、次のように並べ替えます。

0001
0010
0100
1000
0102
1100
0112
1130

これは私を夢中にさせています。ずっと前に Google で自分の質問に対する答えを見つけるべきだったような気がします。ある種のオーバーロードの 1 つが役立つかもしれないと思ったのですが、そうは見えません。

4

3 に答える 3

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 に答える
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 に答える