異なるプロパティを持つ乗客(オブジェクト)のリストがあります。
passenger.name
passenger.age
passenger.surname
このリストを年齢基準で並べ替えたいのですが、どうすればよいですか?
私は整数/文字列のリストでList.Sort()が動作することを知っていますが、オブジェクトリストの場合、オブジェクトプロパティの値でソートできるかどうかはわかりません!
ありがとう。
オブジェクト内のプロパティでソートするには、そのプロパティを取得するための比較器またはメソッドを指定する必要があります。
List.Sort
方法:
theList.Sort(Function(x, y) x.age.CompareTo(y.age))
OrderBy
拡張メソッドを使用する:
theList = theList.OrderBy(Function(x) x.age).ToList()
カスタム文字列の並べ替えが必要な場合は、指定した順序に基づいて数値を返す関数を作成できます。
たとえば、前面または留め金に基づいて並べ替えたい写真がありました。だから私は次のことをしました:
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)
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
次のようにsort Listメソッドを呼び出します:alResult.Sort(new JSONReturnComparer())
たぶんそれはあなたを助けるかもしれない