【问题标题】:Ordering a list by two properties, ParentID and ChildID按两个属性排序列表,ParentID 和 ChildID
【发布时间】:2012-10-07 00:26:36
【问题描述】:

我有一个具有 3 个属性的类:名称、ID 和 ParentID。

我的数据:

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

我将所有内容都放在 List 中,并尝试使用 OrderBy 或 Sort 方法。不知道哪个更好。

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

【问题讨论】:

    标签: vb.net list


    【解决方案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

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

    【讨论】:

      猜你喜欢
      • 2014-02-28
      • 2019-11-08
      • 1970-01-01
      • 2019-09-19
      • 2012-05-16
      • 2011-01-25
      • 2014-08-02
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多