Abundando en el método Sort de listas genéricas, a continuación muestro dos formas de ordenar listas genéricas de objetos en VB.Net.
Para ambas formas utilizaré a modo de ejemplo la siguiente clase:
Public Class myKeyAndData
Private pnKey As Integer
Private pcData As String
Public Sub New()
pnKey = 0
pcData = ""
End Sub
Public Sub New(ByVal tnKey As Integer, ByVal tcData As String)
pnKey = tnKey
pcData = tcData
End Sub
Public Property Key() As Integer
Get
Return pnKey
End
Get
Set(ByVal value As Integer)
pnKey = value
End Set
End Property
Public Property Data() As String
Get
Return pcData
End Get
Set(ByVal value As String)
pcData = value
End Set
End Property
End Class
METODO 1: Definir una clase adicional que implemente la interface IComparer.
Private Class ItemsComparer
Implements IComparer(Of myKeyAndData)
Public Function Compare(ByVal p1 As myKeyAndData, _
ByVal p2 As myKeyAndData) As Integer Implements _
IComparer(Of myKeyAndData).Compare
Return p1.Data.CompareTo(p2.Data)
End Function
End Class
Ejemplo:
Dim loLista as new List(of myKeyAndData) loLista.add(new miKeyAndData(1,"Rodolfo") loLista.add(new miKeyAndData(2,"Antonio") loLista.add(new miKeyAndData(3,"Mario") loLista.add(new miKeyAndData(4,"Carlos") loLista.Sort(New ItemsComparer)
METODO 2: Hacer que la clase implemente la interface IComparable.
Public Class myKeyAndData
Implements IComparable(Of myKeyAndData)
Private pnKey As Integer
Private pcData As String
Public Sub New()
pnKey = 0
pcData = ""
End Sub
Public Sub New(ByVal tnKey As Integer, ByVal tcData As String)
pnKey = tnKey
pcData = tcData
End Sub
Public Property Key() As Integer
Get
Return pnKey
End Get
Set(ByVal value As Integer)
pnKey = value
End Set
End Property
Public Property Data() As String
Get
Return pcData
End Get
Set(ByVal value As String)
pcData = value
End Set
End Property
Public Function CompareTo(ByVal toOtro As myKeyAndData) As Integer _
Implements IComparable(Of myKeyAndData).CompareTo
return Data.CompareTo(toOtro.Data)
End Function
End Class
Ejemplo:
Dim loLista as new List(of myKeyAndData) loLista.add(new miKeyAndData(1,"Rodolfo") loLista.add(new miKeyAndData(2,"Antonio") loLista.add(new miKeyAndData(3,"Mario") loLista.add(new miKeyAndData(4,"Carlos") loLista.Sort()
Advertisement