Primero, en tu código haces un Enum de la siguiente manera:
Código:
Public Enum CompareByOptions
DateReceived
JobID
ClientID
From
End Enum
En este enum vas a poner el nombre de las propiedades del objeto que quieres ordenar, ya sea nombre, o apellidos, etc.
Además tienes que hacer una clase que Implemente la Interface ICompare.
En mi caso quedó de la siguiente manera
Código:
Public Class comparePkgs
Implements IComparer
Private compareBy As CompareByOptions = CompareByOptions.DateReceived
Public Sub New(ByVal cBy As CompareByOptions)
compareBy = cBy
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
' Convert Pkg1 and Pkg2
Dim p1 As TomsWN.MyPkg = DirectCast(x, TomsWN.MyPkg)
Dim p2 As TomsWN.MyPkg = DirectCast(y, TomsWN.MyPkg)
Select Case compareBy
Case CompareByOptions.DateReceived
Return DateTime.Compare(p1.ReceivedDate, p2.ReceivedDate)
Case CompareByOptions.ClientID
Return String.Compare(p1.ClientID, p2.ClientID)
Case CompareByOptions.From
Return String.Compare(p1.From, p2.From)
Case CompareByOptions.JobID
Return String.Compare(p1.JobID, p2.JobID)
End Select
End Function
End Class
En este ejemplo, p1 y p2 deben de ser del mismo tipo que los objetos que quieras comparar.
Ahora, después de que tienes tu Array lleno con todos los elementos, utiliza el metodo Sort de la siguiente manera:
Código:
Array.Sort(myArray, New comparePkgs(CompareByOptions.DateReceived))
El código lo adapté de un artículo publicado en
www.4guysfromrolla.com pero se me hizo mas rápido publicar mi código que buscar el artículo.
Espero haya sido de ayuda.