我有一個對象列表,我試圖按兩個屬性進行排序,一個屬性按自定義順序排序。該列表具有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的第二個排序順序上。我意識到我可以將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(.....)來得到我想要的順序組合自定義排序功能更簡單的方法?