■VB.Netのジェネリックリストの並び替え
・VB.Netで構造体配列の使い方を調べました。
並び替え方法を細かく指定できるので簡単なプログラムなら
使い勝手が良いです。以下サンプル
Public Class Form1
'構造体配列
Public Structure
P_Rec_
Public code1 As String 'コード1
Public code2 As String 'コード2
Public name As String '名前
End Structure
Shared Function CompareAccount(ByVal x As P_Rec_, ByVal y As P_Rec_) As Integer
'並び替えの設定
If x.code1 > y.code1 Then 'コード1
Return 1
ElseIf x.code1 < y.code1 Then
Return -1
Else
If x.code2 > y.code2 Then 'コード2
Return 1
ElseIf x.code2 < y.code2 Then
Return -1
Else
Return 0
End If
End If
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
'配列作成
Dim w_List As New System.Collections.Generic.List(Of
P_Rec_)
'配列に追加
w_List.Add(precSet("01", "1001", "りんご"))
w_List.Add(precSet("02", "1003", "デラウエア"))
w_List.Add(precSet("01", "1002", "ふじ"))
w_List.Add(precSet("01", "1005", "つがる"))
w_List.Add(precSet("02", "1006", "ぶどう"))
w_List.Add(precSet("01", "1004", "王林"))
w_List.Add(precSet("02", "1007", "巨峰"))
w_List.Add(precSet("01", "1003", "むつ"))
w_List.Add(precSet("02", "1008", "マスカット"))
w_List.Add(precSet("02", "1009", "ピオーネ"))
For Each rec As P_Rec_ In
w_List
Debug.Print(rec.code1 & ":" & rec.code2 & ":" &
rec.name)
Next
'並び換え
w_List.Sort(AddressOf
CompareAccount)
Debug.Print("-------------------------------")
For Each rec As P_Rec_ In
w_List
Debug.Print(rec.code1 & ":" & rec.code2 & ":" &
rec.name)
Next
End Sub
Function precSet(ByVal code1 As String, ByVal code2 As String, ByVal name As String) As
P_Rec_
'値を受け取って構造体にセットして返す
Dim WPrec As
P_Rec_
WPrec = New
P_Rec_
WPrec.code1 =
code1
WPrec.code2 =
code2
WPrec.name =
name
Return WPrec
End Function
End Class