Ich habe eine Liste von Objekten und ich versuche, nach zwei Eigenschaften mit einer Eigenschaft sortiert nach einer benutzerdefinierten Reihenfolge zu sortieren. Die Liste enthält Eigenschaften von ReqType und PartNumber. ReqType wird "M", "B", "S" oder null sein und ich möchte die Liste in dieser Reihenfolge sortieren. Sortieren Sie dann nach PartNumber.vb.net Sortierliste von Objekten mit benutzerdefinierter Reihenfolge
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
Ich begann mit dem Code unten, aber sortiert nur ReqType alphabetisch.
Ich habe dann eine Methode zum Erstellen einer benutzerdefinierten Sortierreihenfolge mit dem folgenden Code gefunden. Obwohl ich Ebom.Sort() benutze, scheint es mir nicht möglich zu sein, die zweite Sortierreihenfolge für PartNumber festzulegen. Ich weiß, dass ich wahrscheinlich die PartNumber-Sortierung zu der benutzerdefinierten Funktion hinzufügen könnte, aber das scheint eine Menge Arbeit zu sein.
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
Gibt es einen einfacheren Weg durch eine benutzerdefinierte Reihenfolge zu sortieren oder zumindest die benutzerdefinierte Sortierfunktion mit einem .thenby zu kombinieren (.....), den Auftrag zu bekommen Ich mag würde?