sort - ¿Cómo ordenar un System.Collections.Generic.List en VB.Net?
sort with comparator c# (4)
¿Estás usando VB9? Si es así, usaría una expresión lambda para crear un Comparer(Of Schedule_PayItem)
. De lo contrario, escriba una clase corta para implementar IComparer(Of Schedule_PayItem)
. pase cualquiera que tenga en List.Sort.
Un ejemplo para la expresión lambda (no probado):
m_equipmentList.Sort(Function(p1, p2) p1.ResourceID.CompareTo(p2.ResourceID))
Y para el IComparer(Of Schedule_PayItem)
:
Public Class PayItemResourceComparer
Implements IComparer(Of Schedule_PayItem)
Public Function Compare(ByVal p1 As Schedule_PayItem, _
ByVal p2 As Schedule_PayItem) As Integer
Return p1.ResourceID.CompareTo(p2.ResourceID)
End Function
End Class
...
m_equipmentList.Sort(New PayItemResourceComparer)
Utilizo una lista genérica (m_equipmentList) que es una colección de objetos (Schedule_Payitem).
¿Cómo puede ordenar la lista de acuerdo con la libertad de un objeto infantil?
Dim m_equipmentList As New List(Of Schedule_Payitem)
Necesita ordenar m_equipmentList en base a la propiedad resourceid de Schedule_Payitem.
No conozco vb.net, así que lo hice en C #
m_equipmentList.Sort(
(payItem1,payItem2)=>payItem1.ResourceID.CompareTo(payItem2.ResourceID));
y al usar el reflector lo tradujo a vb.net espero que ayude
m_equipmentList.Sort(
Function (ByVal payItem1 As Schedule_Payitem, ByVal payItem2 As Schedule_Payitem)
Return payItem1.ResourceID.CompareTo(payItem2.ResourceID)
End Function)
o puede heredar Schedule_Payitem de IComparable e implementar CompareTo y luego simplemente llamar a m_equipmentList.Sort()
Prueba esto
Dim m_equipmentList As New List(Of Schedule_Payitem)
m_equipmentList.Sort(delegate(Schedule_Payitem p1, Schedule_Payitem p2)
{
return p1.resourceid .CompareTo(p2.resourceid );
});
Puede lograr ordenar la lista en orden descendente cambiando esta-
m_equipmentList.Sort(
Function (ByVal payItem1 As Schedule_Payitem, ByVal payItem2 As Schedule_Payitem)
Return payItem1.ResourceID.CompareTo(payItem2.ResourceID)
End Function)
a esto
m_equipmentList.Sort(
Function (ByVal payItem1 As Schedule_Payitem, ByVal payItem2 As Schedule_Payitem)
Return payItem2.ResourceID.CompareTo(payItem1.ResourceID)
End Function)