按类值对VB.net列表进行排序

时间:2011-06-25 15:21:20

标签: vb.net list sorting

我有一个列表(即Dim nList as new List(of className))。每个类都有一个名为zIndex的属性(即className.zIndex)。是否可以通过列表中所有元素中的zIndex变量对列表元素进行排序?

3 个答案:

答案 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()