私はオブジェクトのリストを持っています。私はカスタムプロパティでソートされた1つのプロパティを持つ2つのプロパティでソートしようとしています。リストにはReqTypeとPartNumberのプロパティがあります。 ReqTypeは "M"、 "B"、 "S"、またはnullになります。リストをこの順番でソートしたいと思います。次にPartNumberで並べ替えます。vb.netカスタムオーダーのオブジェクトリストの並べ替え
Input list:
PartNumber ReqType
124 B
125 M
123 B
121 S
120 M
115
Expected Sort:
PartNumber ReqType
120 M
125 M
123 B
124 B
121 S
115
私は以下のコードで開始しましたが、ReqTypeはアルファベット順に並べ替えられます。
Return EBom.OrderBy(Function(f) f.ReqType).ThenBy(Function(f) f.PartNumber).ToList
次に、以下のコードを使用してカスタムソート順を作成する方法が見つかりました。 Ebom.Sort()を使用しても、PartNumberの2番目の並べ替え順序はわかりません。おそらくPartNumberのソートをカスタム関数に追加することができたと思いますが、それは多くの作業のようです。
EBom.Sort()
Return EBom.ToList
Implements IComparable(Of EBomList)
Public Function SortReq(other As EBomList) As Integer Implements IComparable(Of EBomList).CompareTo
If (Me.ReqType = other.ReqType) Then
Return 0
ElseIf (Me.ReqType = "M") Then
Return -1
ElseIf (Me.ReqType = "B") Then
If (other.ReqType = "M") Then
Return 1
Else
Return -1
End If
ElseIf (Me.ReqType = "S") Then
If (other.ReqType = "M" Or other.ReqType = "B") Then
Return 1
Else
Return -1
End If
Else
Return 1
End If
End Function
カスタムオーダーでソートまたは少なくとも.thenby(.....)私が好きな順序を取得するとカスタムソート機能を組み合わせるための簡単な方法はありますか?