Получить всех детей в один список - рекурсивный C #

C # | .NET 4.5 | Entity Framework 5

У меня есть класс в Entity Framework, который выглядит следующим образом:

public class Location
{
   public long ID {get;set;}
   public long ParentID {get;set;}
   public List<Location> Children {get;set;}
}

ID является идентификатором местоположения, ParentID связывает его с родителем, а Children содержит все дочерние местоположения родительского местоположения. Я ищу какой-то простой способ, вероятно, рекурсивный, чтобы получить все "Местоположение" и их детей в один список, содержащий Location.ID. У меня возникли проблемы с концептуальной рекурсивной концепцией. Любая помощь приветствуется.

Это то, что у меня есть, это расширение класса сущностей, но я считаю, что это можно сделать лучше / проще:

public List<Location> GetAllDescendants()
{
    List<Location> returnList = new List<Location>();
    List<Location> result = new List<Location>();
    result.AddRange(GetAllDescendants(this, returnList));
    return result;
}

public List<Location> GetAllDescendants(Location oID, ICollection<Location> list)
{
    list.Add(oID);
    foreach (Location o in oID.Children)
    {
            if (o.ID != oID.ID)
                    GetAllDescendants(o, list);
    }
    return list.ToList();
}

ОБНОВЛЕНО

Я закончил тем, что написал рекурсию в SQL, бросил ее в SP, а затем втянул в Entity. Мне показалось, что он чище и проще, чем использование Linq, и, судя по комментариям, Linq и Entity кажутся не лучшим путем. Спасибо за помощь!

Ответы на вопрос(8)

Ваш ответ на вопрос