我有一个对象列表,我试图按两个属性进行排序,一个属性按自定义顺序排序。该列表具有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(.....)来得到我想要的顺序组合自定义排序功能更简单的方法?