I have a list (i.e. Dim nList as new List(of className)). Each class has a property named zIndex (i.开发者_开发技巧e. className.zIndex). Is it possible to sort the elements of the list by the zIndex variable in all of the elements of the list?
Assuming you have LINQ at your disposal:
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
Or if LINQ isn't your thing:
Dim list = New List(Of Person)()
list.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
'Will sort list in place
LINQ offers more flexibility; such as being able to use ThenBy if you want to order by more than one thing. It also makes for a slightly cleaner syntax.
You can use a custom comparison to sort the list:
nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
If not LINQ, then you can implement the IComparable(Of ClassName) to your class:
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
and then from your code:
nList.Sort()
加载中,请稍侯......
精彩评论