VB.Net对象按2个标准排序

时间:2014-01-04 00:57:22

标签: vb.net sorting object

我有一个具有3个属性(宽度,高度和数量)的对象,我按高度排序:

pA.Sort(Function(x, y) y.height.CompareTo(x.height))

如果有匹配的高度,我如何按宽度排序?

由于

1 个答案:

答案 0 :(得分:0)

pA.Sort(Function(x, y) Iif(y.height.CompareTo(x.height) = 0, y.width.CompareTo(x.width), y.height.CompareTo(x.height)))

您可以尝试使用多行lambda来阻止t.height.CompareTo(x.height)执行两次:

pA.Sort(Function(x, y)
            Dim heightDifference = y.height.CompareTo(x.height)
            If Not heightDifference = 0 Then
                Return heightDifference
            Else
                Return y.width.CompareTo(x.width)
            End If
        End Function)

或者您可以使用LINQ,但它会重新创建已排序的列表,而不是将其排序

pA = pA.OrderBy(Function(x) x.height).ThenBy(Function(x) x.width).ToList()