【发布时间】:2012-07-05 17:46:17
【问题描述】:
我有一个具有以下基本结构的对象列表:
class Person
{
public int ID {get; set;}
public bool ShowChildren {get; set;}
public int ParentID {get; set;}
// ...many other properties...
}
我需要返回按 ID 排序的 Person 父类列表。如果启用了 ShowChildren 标志,则还返回其父级下的子级,按 ID 排序。
这只有一层深,即孩子不会有孩子。
我可以编写一个 linq 语句来给我所有的父母,但我被困在如何在启用父母的标志时也包括排序的孩子。
var People = PersonList
.Where(x => x.ParentID == 0)
.Orderby(x => x.ID)
.ToList();
【问题讨论】:
-
您只是想要一个包含所有父母和相关子女的平面列表,还是想要一个孩子在某种程度上“低于”父母的层次结构?
-
列表的最终排序应该是自己ID还是ParentID再自己ID?我的意思是,孩子应该永远在父母之后吗?
-
你希望返回的对象是一个列表,孩子紧跟在他们的父母后面?
-
结果列表将绑定到数据视图,该数据视图需要按父子顺序排列。因此,结果列表应按父母排序,然后按每个父母下的孩子排序。如果这有意义的话。
标签: c# linq c#-4.0 linq-to-objects