Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/12/2005, 09:38
Avatar de Alex Reyes
Alex Reyes
 
Fecha de Ingreso: diciembre-2005
Ubicación: Camarillo, CA
Mensajes: 242
Antigüedad: 19 años, 2 meses
Puntos: 2
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.
__________________
Alex Reyes
http://jalexreyes.spaces.live.com