我有一个C#列表,其中包含由存储过程返回的以下字段:
CarrierId ParentCarrierId Name Descrition
1 NULL A AA
2 1 B BB
3 1 C CC
4 3 D DD
5 NULL E EE
我需要构建一个嵌套的对象列表,以便从此输出中提取出所有子项。有谁可以帮助我构建一个LINQ代码来实现这个目标?
期望的结果:
CarrierId = 1
|__________________ CarrierId = 2
|
|__________________ CarrierId = 3
|
| |___________________ CarrierId = 4
CarrierId = 5
期望的结果应该如上所述。
以下代码将事物排列成树状,但子节点仍然出现在列表中。
c.Children = carrierList.Where(child => child.ParentCarrierId == c.CarrierId).ToList();
CarrierId = 1
|
|__________________ CarrierId = 2
|
|__________________ CarrierId = 3
| |___________________ CarrierId = 4
|
CarrierId = 2
|
CarrierId = 3
|
CarrierId = 4
|
CarrierId = 5
我不希望出现这种行为。如果某些东西出现为子项,则应从根中删除。