Fre*_*nöw 23 vb.net sorting list
我有一个清单(即Dim nList as new List(of className)).每个类都有一个名为zIndex(ie className.zIndex)的属性.是否可以通过列表中所有元素中的zIndex变量对列表元素进行排序?
vcs*_*nes 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
Run Code Online (Sandbox Code Playgroud)
或者如果LINQ不是你的事情:
Dim list = New List(Of Person)()
list.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
'Will sort list in place
Run Code Online (Sandbox Code Playgroud)
LINQ提供更大的灵活性; ThenBy如果您想通过多个订单进行订购,则可以使用.它还使语法略微清晰.
您可以使用自定义比较对列表进行排序:
nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
Run Code Online (Sandbox Code Playgroud)
如果不是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
Run Code Online (Sandbox Code Playgroud)
然后从你的代码:
nList.Sort()
Run Code Online (Sandbox Code Playgroud)