VB.Net Tutorial/Collections/IComparer
Implements IComparer
<source lang="vbnet">Imports System.Collections public class Test
public Shared Sub Main Dim emps(4) As Employee emps(0) = New Employee("R", "S") emps(1) = New Employee("S", "A") emps(2) = New Employee("T", "P") emps(3) = New Employee("H", "S") emps(4) = New Employee("E", "C") Dim emp_comparer As New EmployeeComparer Array.Sort(emps, emp_comparer) For i As Integer = 0 To emps.GetUpperBound(0) Console.WriteLine(emps(i).ToString()) Next i End Sub
End class Public Class Employee
Public FirstName As String Public LastName As String Public Sub New(ByVal first_name As String, ByVal last_name As String) FirstName = first_name LastName = last_name End Sub Public Overrides Function ToString() As String Return LastName & ", " & FirstName End Function
End Class Public Class EmployeeComparer
Implements IComparer Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements System.Collections.IComparer.rupare Dim mgr1 As Employee = DirectCast(x, Employee) Dim mgr2 As Employee = DirectCast(y, Employee) Return String.rupare(mgr1.ToString, mgr2.ToString) End Function
End Class</source>
A, S C, E P, T S, H S, R
Use custom Comparer to compare objects
<source lang="vbnet">Imports System.Collections public class Test
public Shared Sub Main Dim emps(4) As Employee emps(0) = New Employee("R", "S") emps(1) = New Employee("S", "A") emps(2) = New Employee("T", "P") emps(3) = New Employee("H", "S") emps(4) = New Employee("E", "C") Dim emp_comparer As New EmployeeComparer Array.Sort(emps, emp_comparer) For i As Integer = 0 To emps.GetUpperBound(0) Console.WriteLine(emps(i).ToString()) Next i End Sub
End class Public Class Employee
Public FirstName As String Public LastName As String Public Sub New(ByVal first_name As String, ByVal last_name As String) FirstName = first_name LastName = last_name End Sub Public Overrides Function ToString() As String Return LastName & ", " & FirstName End Function
End Class Public Class EmployeeComparer
Implements IComparer Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements System.Collections.IComparer.rupare Dim mgr1 As Employee = DirectCast(x, Employee) Dim mgr2 As Employee = DirectCast(y, Employee) Return String.rupare(mgr1.ToString, mgr2.ToString) End Function
End Class</source>
A, S C, E P, T S, H S, R