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
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.
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()
You can use a custom comparison to sort the list:
nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))