2012-10-07 46 views
0

我有一个具有3个属性的类:名称,ID和ParentID。通过两个属性排序列表,ParentID和ChildID

我的数据:

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

我有一个列表的一切,并试图使用OrderBy或者是排序的方法。不知道哪个更好。

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

回答

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,你将不得不创建一个新的列表。