2011-06-25 18 views

cevap

41

emrinde LINQ var varsayarsak:

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 

Veya LINQ şey değilse:

Dim list = New List(Of Person)() 
list.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex)) 
'Will sort list in place 

LINQ daha fazla esneklik sunar; Birden fazla şeyle sipariş vermek isterseniz ThenBy'u kullanabilmeniz gibi. Ayrıca biraz daha temiz bir sözdizimi yapar. , O zaman sınıfına (ClassName Of) IComparable uygulayabilir

nList.Sort(Function(x, y) x.zIndex.CompareTo(y.zIndex)) 
+0

LINQ örneğini kullanamadım, nasıl etkinleştiririm? Çalışmak için ikinci bir tane var, teşekkürler :) – FreeSnow

+0

@DalexL Hedeflediğiniz çerçeve sürümüne bağlıdır. 3.5 ya da daha büyük lazım. VB.NET Derleyici System.Linq ad alanını sizin için almalı. (Proje'nin özelliklerinin Referanslar sekmesine bakın). – vcsjones

+0

Tamam, tarihleri ​​karşılaştırıyorum. "A.Sort (işlev (x, y) x.DelegationDate.CompareTo (y.DelegationDate)) satırımı kullandığımda, hiç sıralanmaz. Orijinal düzende bırakır. –

8

Listeyi sıralamak için özel bir karşılaştırmayı kullanabilirsiniz Sizin kodunuz:

nList.Sort() 
+0

LINQ'yi nasıl etkinleştiririm? – FreeSnow

+0

@DalexL: 'System.Linq' ad alanını içe aktardınız. – Guffa

+0

@DalexL: Önerdiğim çözüm için Linq'e ihtiyacınız olmadığını unutmayın. – Guffa

6

LINQ Değilse: den sonra

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 

ve

+0

'CompareTo' yönteminin tamamını, _ZIndex.CompareTo (other.ZIndex) 'i döndürmek için kısaltabilirsiniz – vcsjones

İlgili konular