将所有子项放入一个列表中 - 递归 C#
将所有子项放入一个列表中 - 递归 C#
C# | .NET 4.5 | Entity Framework 5
我在Entity Framework中有一个类,代码如下:
public class Location { public long ID {get;set;} public long ParentID {get;set;} public ListChildren {get;set;} }
ID是位置的标识符,ParentID将其与父位置关联,Children包含父位置的所有子位置。我正在寻找一种简单的方式,可能是递归地,将所有"Location"及其子位置获取到一个包含Location.ID的单一列表中。我在概念上遇到了困难。感谢任何帮助。
这是我目前的代码,它是实体类的扩展,但我相信它可以更好/更简单地完成:
public ListGetAllDescendants() { List returnList = new List (); List result = new List (); result.AddRange(GetAllDescendants(this, returnList)); return result; } public List GetAllDescendants(Location oID, ICollection list) { list.Add(oID); foreach (Location o in oID.Children) { if (o.ID != oID.ID) GetAllDescendants(o, list); } return list.ToList(); }
更新
最终我写了一个递归的SQL存储过程,然后将其引入Entity。对我来说,这似乎更干净、更简单,而且根据评论来看,Linq和Entity似乎不是最好的选择。感谢所有的帮助!