explicate!
Me gusta la idea
  ----- Original Message ----- 
  From: Martin Salias 
  To: [email protected] 
  Sent: Friday, June 01, 2007 2:59 PM
  Subject: [puntonet] Pregunta sobre ordenamiento


  Hola, Javier.

  No necesariamente. Podrías pasar el criterio en un delegate. Casualmente eso 
es lo que hace LINQ, pasando expresiones lambda (que son delegados anónimos más 
elegantes, nada más).

  Saludos,
  -- 
  Martín Salías
  www.Salias.com.ar
  Agile Alliance Member - Microsoft MVP 




  On 6/1/07, MYMTEC S.A. - Javier Wamba <[EMAIL PROTECTED]> wrote:
    No se puede con la implementacion de IComparable porque tengo que definir el
    ordenamiento en cada objeto y me quitaria la flexibilidad de poder decir que
    campos y que precedencia quiero. Con IComparable debo decirle como se 
ordena 
    en el codigo del compareTo

    Espero que se entienda.

    Javier

    ----- Original Message -----
    From: "Carlos S. Villalba" <[EMAIL PROTECTED] >
    To: <[email protected]>
    Sent: Friday, June 01, 2007 12:56 PM
    Subject: [puntonet] Pregunta sobre ordenamiento


    Es verdad, justamente era lo que iba a recomendar. Me ahorraste usar mis 
    dedos!!!.

    ___________________________________________

    Sebastian Villalba
    Award Support S.R.L.
    [EMAIL PROTECTED]
    Tel/Fax: 4541-0503 y lineas rotativas 
    ___________________________________________

    -----Mensaje original-----
    De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leonardo 
    Micheloni
    Enviado el: viernes, 01 de junio de 2007 12:54
    Para: [email protected]
    Asunto: [puntonet] Pregunta sobre ordenamiento

    Estás usando .net 2? porque si es así yo usaría una lista genérica y 
    de un modo muy fácil haría un sort implementarndo IComparable con el
    criterio que quiera.

    On 6/1/07, Pata del Santo <[EMAIL PROTECTED]> wrote:
    >
    >
    > yo la lista de parámetros la pasaría como un array de string, para no
    > estar
    > agregando parámetros opcionales en orderList
    >
    >  ________________________________
    >  De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de MYMTEC
    > S.A. - Javier Wamba
    > Enviado el: viernes, 01 de junio de 2007 16:08
    > Para: [email protected]
    > Asunto: [puntonet] Pregunta sobre ordenamiento
    >
    >
    >
    >
    >
    > Buen dia!
    >
    > Hoy tengo una pregunta con respecto a mi codigo.
    >
    > El problema que esto intenta resolver es ordenar una lista por 
propiedades 
    > de sus objetos por ejemplo podria tener un objeto:
    >
    > persona que tiene las propiedades fechaDeNacimiento y provincia( que es un
    > objeto que contiene la propiedad id) entonces podria escribir
    >
    > funciones.orderList(listaDePersonas,"fechaDeNaciemiento
    > DESC","provincia.id ASC")
    >
    > donde a partir del segundo parametro se define el criterio de 
    > ordenamiento.
    >
    > Queria saber si esta bien hecho o hay algo que ya lo hace y de forma
    > optimizada.
    >
    > Y si alguien se pregunta porque lo hice asi: Es una de las tantas de mi
    > jefe! 
    >
    > Saludos y gracias,
    >
    > Javier Wamba
    >
    >
    >
    > Imports System
    >
    > Public Class Funciones
    >
    > #Region "Ordenamiento"
    >
    > Private Shared mutexOrden As New Threading.Mutex
    >
    > Private Shared ordenamientos() As String
    >
    > Public Shared Sub orderList(ByVal list As List(Of base), ByVal ParamArray
    > orders() As String)
    >
    > mutexOrden.WaitOne ()
    >
    > Try
    >
    > ordenamientos = orders
    >
    > list.Sort(AddressOf order)
    >
    > mutexOrden.ReleaseMutex()
    >
    > Catch ex As Exception
    >
    > mutexOrden.ReleaseMutex ()
    >
    > End Try
    >
    > End Sub
    >
    > Private Shared Function devolverPropiedad(ByVal b1 As entidades.base,
    > ByVal
    > prop() As String, ByVal index As Integer) As Object
    >
    > Try
    >
    > If prop.Length - 1 = index Then
    >
    > Return b1.GetType.GetProperty(prop(index)).GetValue(b1, Nothing)
    >
    > Else
    >
    > Return devolverPropiedad(b1.GetType.GetProperty (prop(index)).GetValue(b1,
    > Nothing), prop, index + 1)
    >
    > End If
    >
    > Catch ex As Exception
    >
    > Throw ex
    >
    > End Try
    >
    > End Function
    >
    > Private Shared Function orderAuxiliar(ByVal b1 As entidades.base, ByVal b2
    > As entidades.base, ByVal index As Integer) As Integer
    >
    > Dim vec() As String
    >
    > Try
    >
    > vec = ordenamientos(index).Split(" ")
    >
    > If vec.Length = 2 Then
    >
    > Dim compar As Integer = devolverPropiedad(b1, vec(0).Split("."),
    > 0).compareto(devolverPropiedad(b2, vec(0).Split("."), 0))
    >
    > If compar = 0 Then 
    >
    > If ordenamientos.Length - 1 = index Then
    >
    > Return compar
    >
    > Else
    >
    > Return orderAuxiliar(b1, b2, index + 1)
    >
    > End If
    >
    > Else
    >
    > If vec(1).ToUpper = "DESC" Then 
    >
    > Return compar * (-1)
    >
    > Else
    >
    > Return compar
    >
    > End If
    >
    > End If
    >
    > ElseIf vec.Length = 1 Then
    >
    > Dim compar As Integer = devolverPropiedad(b1, vec(0).Split("."), 
    > 0).compareto(devolverPropiedad(b2, vec(0).Split("."), 0))
    >
    > If compar = 0 Then
    >
    > If ordenamientos.Length - 1 = index Then
    >
    > Return compar
    >
    > Else
    >
    > Return orderAuxiliar(b1, b2, index + 1)
    >
    > End If
    >
    > Else
    >
    > Return compar
    >
    > End If
    >
    > Else
    >
    > Throw New Exception("Demasiados espacios") 
    >
    > End If
    >
    > Catch ex As Exception
    >
    > Throw ex
    >
    > End Try
    >
    > End Function
    >
    > Private Shared Function order(ByVal b1 As entidades.base, ByVal b2 As 
    > entidades.base) As Integer
    >
    > Try
    >
    > Return orderAuxiliar(b1, b2, 0)
    >
    > Catch ex As Exception
    >
    > Throw ex
    >
    > End Try
    >
    > End Function
    >
    > #End Region
    >
    > End class
    >
    >
    >
    > Public Class base
    >
    > Friend Sub New()
    >
    > End Sub
    >
    > End Class








Responder a