Public Class ClientComparer
Implements IComparer
Private mSortProperty As String
Private mSortOrder As SortOrder
Public Sub New(ByVal SortProperty As String, Optional ByVal SortOrder As SortOrder = SortOrder.Ascending)
mSortProperty = SortProperty
mSortOrder = SortOrder
End Sub
'Compare the two employees.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim ClientX As Client.Client = DirectCast(x, Client.Client)
Dim ClientY As Client.Client = DirectCast(y, Client.Client)
Dim strTempX As String
Dim strTempY As String
Dim intComparison As Integer
'CHECK WHICH PROPERTY WE ARE SORTING ON
If mSortProperty = "First" Then
strTempX = ClientX.FirstName & ClientX.LastName
strTempY = ClientY.FirstName & ClientY.LastName
If mSortOrder = SortOrder.Ascending Then
intComparison = String.Compare(strTempX, strTempY)
Else
intComparison = String.Compare(strTempY, strTempX)
End If
ElseIf mSortProperty = "Last" Then
strTempX = ClientX.LastName & ClientX.FirstName
strTempY = ClientY.LastName & ClientY.FirstName
If mSortOrder = SortOrder.Ascending Then
intComparison = String.Compare(strTempX, strTempY)
Else
intComparison = String.Compare(strTempY, strTempX)
End If
ElseIf mSortProperty = "Age" Then
'CHECK IF WE ARE SORTING IN ASCENDING OR DESCENDING ORDER
If mSortOrder = SortOrder.Ascending Then
intComparison = Date.Compare(ClientX.DOB, ClientY.DOB)
Else
intComparison = Date.Compare(ClientY.DOB, ClientX.DOB)
End If
End If
'RETURN THE RESULT OF THE COMPARISON
Return intComparison
End Function
End Class