自己写个类,实现IComparer接口。然后实现CompareTo这个函数,如果你要排序,就必须知道两个元素怎么比大小。参数的x,y就是你这两个元素,虽然是object类型,但是可以通过ctype转换。然后经过你的判断返回。最后Sort函数里面参数用这个类的实例就可以了。
如果你的结构是
Private Structure MyStruct
Public Name As String
Public Value As Object
End Structure
那么你的排序类就是
Private Class CompareCls
Inherits Object
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim msX, msY As MyStruct
If TypeOf x Is MyStruct AndAlso TypeOf y Is MyStruct Then
Dim comparer As New CaseInsensitiveComparer
msX = CType(x, MyStruct)
msY = CType(y, MyStruct)
Return comparer .Compare(msX.Name, msY.Name)
Else
Return 0
End If
End Function
End Class
多条件排列的排序类是(Name相同则按Value排序)
Private Class CompareCls
Inherits Object
Implements IComparer
用的时候可以
Dim arr As New ArrayList
arr.Sort(New CompareCls)
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim msX, msY As MyStruct
If TypeOf x Is MyStruct AndAlso TypeOf y Is MyStruct Then
Dim comparer As New CaseInsensitiveComparer
Dim result as Integer
msX = CType(x, MyStruct)
msY = CType(y, MyStruct)
result = comparer .Compare(msX.Name, msY.Name)
If result = 0 Then
result = comparer .Compare(msX.Value , msY.Value )
End If
Else
Return 0
End If
End Function
End Class