61

異なるプロパティを持つ乗客(オブジェクト)のリストがあります。

passenger.name
passenger.age
passenger.surname

そして、このリストを年齢基準で並べ替えたいのですが、どうすればよいですか?

整数/文字列のリストでList.Sort()が機能することはわかっていますが、がオブジェクトリストの場合、オブジェクトプロパティの値で並べ替えることが可能かどうかはわかりません。

ありがとう。

4

4 に答える 4

142

オブジェクト内のプロパティで並べ替えるには、コンペアラーまたはそのプロパティを取得するメソッドを指定する必要があります。

メソッドの使用List.Sort:

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

OrderBy拡張メソッドを使用する:

theList = theList.OrderBy(Function(x) x.age).ToList()
于 2012-07-31T08:26:12.180 に答える
5

カスタム文字列ソートが必要な場合は、指定した順序に基づいて数値を返す関数を作成できます。

たとえば、前面または留め金に基づいて分類したい写真がありました。だから私は次のことをしました:

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)
于 2016-12-15T17:39:58.550 に答える