Visual Basic.NET - Ordenar un arreglo de Objetossegun su un campo

   
Vista:

Ordenar un arreglo de Objetossegun su un campo

Publicado por Javier (30 intervenciones) el 01/07/2008 19:24:08
hola Amigos:
Intento ordenar un arreglo de tipo Empleado (Clase) por el Nombre del Empleado y el metodo "Sort" ó no tiene esa funcionalidad ó deberia implementarla yo mismo haciendo mi propio metodo para éste problema. Me gustaría si saben hacerlo que me digan com ose hace. les paso parte del codigo que hice:

Public Class Empleado
'Declaracion de Atributos

Private msCuil As String
Private msNombres As String
Private mdtFechaIngreso As Date
Private mdcSueldo As Decimal
Private mdcRetenciones As Decimal ' (%)

' Métodos de Propiedades

Public Property Cuil() As String
Get
Return msCuil
End Get
Set(ByVal value As String)
msCuil = value
End Set
End Property
.....
Module Mostrar

...
Private ArrayEmpleado(10) As Empleado = new Empleado()
End module
Public Sub MostrarDatosEmpleados()

.....

Array.Sort( ArrayEmpleado) ---> esto me tira error !!!

end sub

Nota: yo no quiero ordenar las referencias de los obletos sino por nombre del empleado!!! Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenar un arreglo de Objetossegun su un campo

Publicado por Elvis Alberto (19 intervenciones) el 01/07/2008 23:52:15
Me gusto tu problema, tanto es asi que me rompi la cabeza para ver como se solucionaba, en una de las sobrecargas del metodo tenes uno que tiene dos argumento donde el segundo es de tipo System.Colletions.Generic.IComporer. que es un Interfaz, tenes que implementar esta interfaz..
tenes que definir una clase como la siguiente...

Public Class ComparadorEmpleado
'implementacion de la interfaz System.Collection.IComparer
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
'comparo que x e y, sean del tipo Empleado
If TypeOf x Is Empleado AndAlso TypeOf y Is Empleado Then
If CType(x, Empleado).Nombrel > CType(y, Empleado).Nombrel Then
Return 1
Else
'formateo el objeto x para el tipo Empleado para acceder a su miembro nombre
'y hago lo mismo con y
If CType(x, Empleado).Nombrel = CType(y, Empleado).Nombrel Then
Return 0
Else
Return -1

End If
End If
End If
End Function
End Class

Luego donde vas a hacer el ordenamiento tenes que declarar un comparador

Dim Comparador as new ComparadorEmpleado
y llamar al metodo con este comparador
Array.Sort(Empleados, Comparador)
Y me funciono...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar un arreglo de Objetossegun su un campo

Publicado por Elvis Alberto (19 intervenciones) el 01/07/2008 23:54:37
En la parte de la funcion donde dice Return 1, 0, -1, es para indicarle a vb que la comparacion esta dando Mayor, Igual, y Menor respectivamente. Si cambias el orden, te va a ordenar el array de mayor a menor..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar un arreglo de Objetossegun su un campo

Publicado por javier (30 intervenciones) el 02/07/2008 15:43:49
Gracias Alberto , me gustó que te haya interesado el problema, éste se resenta mucho en la práctica, yo lo se hacer en Java , pero como estoy viendo este lenguaje y soy novato, necesitaba su ayuda. Saludos y voy a probar tu solución !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ordenar un arreglo de Objetos para Elvis o Javier

Publicado por Pedro (3 intervenciones) el 02/10/2008 07:48:49
Hola Javier o Elvis

soy nuevo tambien en esto, pero queria solicitarle mas detalle en cuanto a mostrar ya los campos ordenados para el metodo MostrarDatosEmpleados, agradecere su ayuda de antemano.

Public Sub MostrarDatosEmpleados()

.....
Dim Comparador as new ComparadorEmpleado
Array.Sort( Empleado,Comparador)
..
..
'' cual es el codigo para mostrar en la consola los campos del objeto Empleado ya ordenados
..
..
end sub


gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar