https://barnamenevis.org/showpo...&postcount=120

کلاس مورد نظر باید اینترفیس IComparable رو پیاده سازی کند. (این اینترفیس تنها یک متود CompareTo دارد)
به نحوه ی پیاده سازی متود CompareTo دقت کنید :
کد:

Public Class Person
Implements IComparable

Private _firstname As String
Public Property Firstname() As String
Get
Return _firstname
End Get
Set(ByVal value As String)
_firstname = value
End Set

End Property

Private _lastname As String
Public Property Lastname() As String
Get
Return _lastname
End Get
Set(ByVal value As String)
_lastname = value
End Set

End Property

Private _age As Integer
Public Property Age() As Integer
Get
Return _age
End Get
Set(ByVal value As Integer)
_age = value
End Set

End Property

Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal age As Integer)

_firstname = firstname
_lastname = lastname
_age = age
End Sub

Public Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo

If obj.GetType Is GetType(Person) Then

Dim p2 As Person = obj
Return _firstname.CompareTo(p2.Firstname)
Else
Throw New ArgumentException("Object is not a Person.")
End If
End Function


Public Overrides Function ToString() As String

Return String.Format("{0} {1}, Age = {2}", _firstname, _lastname, _age.ToString())
End Function
End Class


مثال - Sort کردن افراد از روی اسم کوچک (استفاده از کلاس بالا) :
کد:


Dim persons As List(Of Person) = New List(Of Person)()
persons.Add(New Person("Behrouz", "Rad", 30))
persons.Add(New Person("Omid", "Mottaghi Rad", 31))
persons.Add(New Person("Mehdi", "Keramati", 32))
persons.Add(New Person("Ali", "Keshavarz", 33))
persons.Add(New Person("Mohammad", "Heshemian", 34))
persons.Add(New Person("Farhad", "XXX", 35))

'//Before Sorting
ListBox1.Items.AddRange(persons.ToArray())

'//ُSorting List
persons.Sort()

'//Sorted List
listBox2.Items.AddRange(persons.ToArray
())