对一个列表进行排序,其中前辈和后辈定义了排序方式。

我需要对一个LineItem列表进行排序,每个LineItem中都定义了一个前辈和后辈。

LineItem{
   public int Id {get;set;}
   public int? PredecessorId {get;set;}
   public int? SuccessorId {get;set;}
}

第一个LineItem没有PredecessorId,最后一个LineItem没有SuccessorId。

我想我可以直接实现IComparable,但是对于只有2个项目的情况下,不可能计算排序。

我如何对一个列表进行排序 List<LineItem>?

编辑

下面是一个例子

 List<LineItem> lineItems = new List<LineItem>{
    new LineItem{ Id = 1, PredecessorId = 2,        SuccessorId = 103},
    new LineItem{ Id = 2, PredecessorId = null,     SuccessorId = 1},
    new LineItem{ Id = 103, PredecessorId = 1,      SuccessorId = 5},
    new LineItem{ Id = 4, PredecessorId = 5,        SuccessorId = null},
    new LineItem{ Id = 5, PredecessorId = 103,      SuccessorId = 4},


};

预期的排序是:1、2、1、103、5、4

2,1,103,5,4

解决方案:

这是你想要的吗?

输入。

Id = 2, PredecessorId = 1, SuccessorId = 3
Id = 1, SuccessorId = 2
Id = 3, PredecessorId = 2

sort:

list.OrderBy(p => p.PredecessorId.HasValue).ThenBy(p => p.PredecessorId.HasValue).OrderBy(p => p.Id).ToList();

输出:

Id 1, PredecessorId , SuccessorId 2
Id 2, PredecessorId 1, SuccessorId 3
Id 3, PredecessorId 2, SuccessorId

给TA打赏
共{{data.count}}人
人已打赏
未分类

haproxy可以添加客户端ssl证书吗?

2022-9-8 8:26:39

未分类

如何使输入字段的宽度可变

2022-9-8 8:37:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索