通过两个属性(ParentID和ChildID)对列表进行排序

时间:2012-10-07 00:26:36

标签: vb.net list

我有一个有3个属性的类:Name,ID和ParentID。

我的数据:

        Name       ID     ParentID
        Event A    1      1
        Event B    2      1
        Event C    3      1
        Event D    4      2

我拥有List中的所有内容,并且正在尝试使用OrderBy或者排序方法。不确定哪个更好。

我需要对列表中的数据进行排序,以便事件将其子项作为列表中的下一项。任何有关这方面的帮助将不胜感激,顺便说一句,我在VB中这样做。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样对列表进行排序

list.Sort(Function(x, y) 2 * x.ParentID.CompareTo(y.ParentID) + _
                         x.ChildID.CompareTo(y.ChildID))

说明:我在这里使用lambda表达式。您可以将其视为一种函数的内联声明。 CompareTo会返回-10+1。否定数字表示x小于y0两者相等,+1表示x大于y。通过将第一个比较乘以2,其符号优先于第二个比较。如果第一个返回0,则第二个只有效果。

在LINQ上使用列表Sort方法的优点是列表是就地排序的。使用LINQ,您必须创建一个新列表。