DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ジェネリックデリゲートでの並べ替え

環境/言語:[WindowsXP, VB2005]
分類:[.NET]

よろしくお願い致します。

以下のように、Comparison(T)ジェネリックデリゲートでの並べ替えを
行っています。

Structure BasicData
Dim type As Integer
Dim dt As String
Dim No As String
End Structure

' Sort
Public Function SortDataByDateAsc(ByVal dataA As BasicData, _
ByVal dataB As BasicData) As Integer

Return Date.Compare(CDate(dataA.dt, dataB.dt)
End Function

構造体をList(basicInfo)で保持していおり、日付順に並べ替えるのに、
basicInfo.Sort(AddressOf SortDataByDateAsc)
と行っています。

日付での並べ替えはできるのですが、例えば、同じ日付があった場合に、
例のように、元の並び順が崩れてしまいます。
例 dt no → dt no
2008/11/10 1 2008/10/31 1
2008/11/10 2 2008/11/10 2
2008/10/31 1 2008/11/10 1

これを同じ日付の場合は、そのままとして、
並べ替えることは可能でしょうか?

よろしくお願い致します。
お望みの方法かどうか・・・

Private Structure BasicData
Implements IComparable
Public type As Integer
Public dt As String
Public No As String
Public Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
Dim iRet As Integer
iRet = Date.Parse(Me.dt).CompareTo(Date.Parse(DirectCast(obj, BasicData).dt))
If iRet = 0 Then
iRet = Me.No.CompareTo(DirectCast(obj, BasicData).No)
End If
Return iRet
End Function
End Structure

  と宣言して・・・
  構造体配列に値を設定し

  Array.Sort(dt)

  とした結果は?

以上。
オショウさん 返信ありがとうざいます。

ご指摘頂いたものを参考にして、
意図することができました。

ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板