У меня есть список (т.е. Dim nList as new List(of className)
). Каждый класс имеет свойство с именем zIndex
(т.е. className.zIndex
). Можно ли отсортировать элементы списка с помощью переменной zIndex во всех элементах списка?
Сортировка списка VB.net по значению класса
Ответ 1
Предполагая, что у вас есть 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
, если вы хотите заказать более чем одну вещь. Это также делает несколько более чистый синтаксис.
Ответ 2
Вы можете использовать произвольное сравнение для сортировки списка:
nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex))
Ответ 3
Если не 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()