投稿者 shu  (社会人) 投稿日時 2011/2/21 21:39:00
> *****A1
> *****A10
> *****A2
> *****A3
前6桁と残りに分け、残りの部分を数値としてみてソートする
ということですか?

IComparerを実装したクラスを作るといろいろなソートが出来ます。
以下はList(of String)のソート例です。


ソート用クラス
    Private Class clsComp
        Implements IComparer(Of String)

        Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
            '--- x, yを各々分離
            Dim x1 = x.Substring(0, 6)
            Dim x2 = CInt(x.Substring(6))
            Dim y1 = y.Substring(0, 6)
            Dim y2 = CInt(y.Substring(6))

            Dim intRet As Integer

            '--- 最初の部分を比較
            intRet = String.Compare(x1, y1)
            '--- 最初の部分が同じなら残りの部分を比較
            Select Case intRet
                Case 0
                    intRet = x2.CompareTo(y2)
            End Select

            Return intRet
        End Function
    End Class

    


    '--- データ追加
    Dim list = New List(Of String)
    list.add(~)
    list.add(~)
    list.add(~)
    list.add(~)
    '--- clsCompを使ってソート
    list.Sort(New clsComp)