我有一个列表(即Dim nList as new List(of className)
)。每个类都有一个名为zIndex
的属性(即className.zIndex
)。是否可以通过列表中所有元素中的zIndex变量对列表元素进行排序?
答案 0 :(得分:42)
假设你有LINQ可供你使用:
Sub Main()
Dim list = New List(Of Person)()
'Pretend the list has stuff in it
Dim sorted = list.OrderBy(Function(x) x.zIndex)
End Sub
Public Class Person
Public Property zIndex As Integer
End Class
或者,如果LINQ不是你的事情:
Dim list = New List(Of Person)()
list.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
'Will sort list in place
LINQ提供更多灵活性;例如,如果您想通过多个订单进行订购,则可以使用ThenBy
。它还使语法更清晰。
答案 1 :(得分:8)
您可以使用自定义比较对列表进行排序:
nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
答案 2 :(得分:6)
如果不是LINQ,那么你可以在你的类中实现IComparable(Of ClassName):
Public Class ClassName
Implements IComparable(Of ClassName)
'Your Class Stuff...
Public Function CompareTo(ByVal other As ClassName) As Integer Implements System.IComparable(Of ClassName).CompareTo
If _ZIndex = other.ZIndex Then
Return 0
Else
If _ZIndex < other.ZIndex Then
Return -1
Else
Return 1
End If
End If
End Function
End Sub
然后从您的代码:
nList.Sort()