2015-01-27 5 views
0

Я новичок в VB.Net, и я использую .Net Framework 2.0. У меня есть пользовательский объект в VB.Net с некоторой сложной иерархииVB.Net Сортировка по пользовательскому объекту

Рассмотрим это мой объект иерархии

Person 
    Addresses 
    Address[1] 
      S.No 1 
      Street 
      .... 
    Address[2] 
      S.No 2 
      Street 
      .... 
    Address[3] 
      **S.No 4** 
      Street 
      .... 
    Address[4] 
      **S.No 3** 
      Street 
      .... 

Теперь я хочу, чтобы отсортировать коллекцию Адрес объекта на основе S.No. Я ожидаю, конечный результат, как в следующем:

Person 
    Addresses 
    Address[1] 
      S.No 1 
      Street 
      .... 
    Address[2] 
      S.No 2 
      Street 
      .... 
    Address[3] 
      **S.No 3** 
      Street 
      .... 
    Address[4] 
      **S.No 4** 
      Street 
      .... 
+0

Пожалуйста, обратите внимание модернизации, по крайней мере, 4,0, намного лучше рамки. – OneFineDay

+0

Опубликовать объект класса. – OneFineDay

ответ

0

Вы можете использовать Array.Sort(T(), IComparer(Of T)) выполнить свою задачу, если «Адрес» является массивом. Если список, вы можете использовать метод list.Sort(IComparer(Of T)).

Пример кода будет:

Class AddressComparer 
    Implements IComparer(Of Address) 

    Public Function Compare(x As Address, y As Address) As Integer Implements System.Collections.Generic.IComparer(Of Address).Compare 
     ' Don't forget to handle "Nothing" values 
     Return x.No.CompareTo(y.No) 
    End Function 
End Class 

Sub Main() 
    Dim addressesArray() As Address = New Address(3) {} 
    addressesArray(0) = New Address(1, "1") 
    addressesArray(1) = New Address(2, "2") 
    addressesArray(2) = New Address(4, "4") 
    addressesArray(3) = New Address(3, "3") 
    Array.Sort(addressesArray, New AddressComparer()) 

    Dim addressesList As New List(Of Address)() 
    addressesList.Add(New Address(1, "1")) 
    addressesList.Add(New Address(2, "2")) 
    addressesList.Add(New Address(4, "4")) 
    addressesList.Add(New Address(3, "3")) 
    addressesList.Sort(New AddressComparer()) 
End Sub 
Смежные вопросы