如何通过其中一个属性对对象集合进行排序

时间:2013-11-04 20:33:00

标签: vb.net sorting

所以有一个名为Article的类有2个属性

Public Property Name As String
Public Property Price As Decimal

现在我创建了另一个包含单个属性的类

Public Property Articles As Article()

这应该是某种存储库,它完全适合它应该做的事情但是现在我必须通过其中一个属性对这个集合进行排序,一次按名称排序,一次按价格排序,而不会丢失之间的连接名称和价格(例如,它必须记住啤酒成本2美元和苹果1美元)。

2 个答案:

答案 0 :(得分:0)

您可以使用Array.Sort对数组进行排序。例如,按价格排序:

Array.Sort(Articles, Function(a1, a2) a1.Price.CompareTo(a2.Price))

答案 1 :(得分:0)

您可以将Array.SortComparison(Of T)代表联系起来;但请注意,您的原始数组将被排序。

Array.Sort(Articles, Function(x, y) x.Name.CompareTo(y.Name))

如果要对多个值排序数组(或者想要保留原始数组),可以使用IEnumerable(Of T).OrderBy方法(与IEnumerable(Of T).ThenBy链接)。

' Either store the result in the current Articles variable or a new one
Dim sortedArray As Article() = Articles.OrderBy(Function(a) a.Name) _
                               .ThenBy(Function(a) a.Price) _
                               .ToArray()