This will do its job:
static IEnumerable<Node> ListParents(IEnumerable<Node> list, int? ID)
{
var current = list.Where(n => n.ID == ID).FirstOrDefault();
if (current == null)
return Enumerable.Empty<Node>();
return Enumerable.Concat(new []{current}, ListParents(list, current.ParentID));
}
This assumes a class Node, for example:
class Node
{
public int ID;
public int? ParentID;
}
Please note that if your relationship ParentIDcauses a loop, this function will return endlessly.
source
share