我有一个有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中这样做。谢谢!
答案 0 :(得分:1)
您可以像这样对列表进行排序
list.Sort(Function(x, y) 2 * x.ParentID.CompareTo(y.ParentID) + _
x.ChildID.CompareTo(y.ChildID))
说明:我在这里使用lambda表达式。您可以将其视为一种函数的内联声明。 CompareTo
会返回-1
,0
或+1
。否定数字表示x
小于y
,0
两者相等,+1
表示x
大于y
。通过将第一个比较乘以2,其符号优先于第二个比较。如果第一个返回0
,则第二个只有效果。
在LINQ上使用列表Sort
方法的优点是列表是就地排序的。使用LINQ,您必须创建一个新列表。