Подтвердить что ты не робот

Сортировка списка объектов в VB.NET

У меня есть список пассажиров (объектов), где он имеет разные свойства.

passenger.name
passenger.age
passenger.surname

И я хочу отсортировать этот список по возрастному критерию, как я могу это сделать?

Я знаю в списке integer/string List.Sort() работает, но если это список объектов, я не знаю, можно ли его сортировать по значению свойства объекта!

Спасибо.

4b9b3361

Ответ 1

Чтобы сортировать по свойству в объекте, вы должны указать его или его метод для получения этого свойства.

Используя метод List.Sort:

theList.Sort(Function(x, y) x.age.CompareTo(y.age))

Используя метод расширения OrderBy:

theList = theList.OrderBy(Function(x) x.age).ToList()

Ответ 2

Если вам нужна специальная сортировка строк, вы можете создать функцию, которая возвращает число в соответствии с указанным вами порядком.

Например, у меня были фотографии, которые я хотел сортировать, основываясь на лицевой стороне или застежке. Поэтому я сделал следующее:

Private Function sortpictures(s As String) As Integer
    If Regex.IsMatch(s, "FRONT") Then
        Return 0
    ElseIf Regex.IsMatch(s, "SIDE") Then
        Return 1
    ElseIf Regex.IsMatch(s, "CLASP") Then
        Return 2
    Else
        Return 3
    End If
End Function

Затем я вызываю функцию сортировки следующим образом:

list.Sort(Function(elA As String, elB As String)
                  Return sortpictures(elA).CompareTo(sortpictures(elB))
              End Function)

Ответ 3

вы должны реализовать интерфейс IComparer.

В этом примере я использую свой пользовательский объект JSONReturn, я реализую свой класс следующим образом:

Friend Class JSONReturnComparer
    Implements IComparer(of JSONReturn)

    Public Function Compare(x As JSONReturn, y As JSONReturn) As Integer Implements    IComparer(Of JSONReturn).Compare
        Return String.Compare(x.Name, y.Name)
    End Function

End Class

Я вызываю свой метод List List следующим образом:    alResult.Sort(новый JSONReturnComparer())

может ли это помочь вам