Click here to Skip to main content
15,892,199 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hello
I have a tree :

Id Title ParentId
1 A 0
2 B 1
3 C 2
4 D 3

How can I remove all children on removing "A" using Entity framework and jqxTree?

What I have tried:

C#
TableTree _TT = _Entity.TableTree.where(c => c.Id == _RemoveArgs.Id).singleorDifault();
if(_TT != null)
{
   _Entity.TableTree.Remove(_TT);
}

TableTree _TT2 = _Entity.TableTree.where(c => c.ParentId == _RemoveArgs.Id).singleorDifault();
if(_TT2 != null)
{
   _Entity.TableTree.Remove(_TT2);
}


_RemoveArgs is the class that I pass json data in javascript file to it.

Thanks in advance
Posted
Updated 31-Oct-16 8:26am

1 solution

Try something like this:
C#
TableTree node = _Entity.TableTree.SingleOrDefault(c => c.Id == _RemoveArgs.Id);
if (node != null)
{
    var nodesToRemove = new List<TableTree>();
    nodesToRemove.Add(node);
    
    var children = _Entity.TableTree.Where(c => c.ParentId == node.Id).ToList();
    if (children.Count != 0)
    {
        var tree = new Queue<IList<TableTree>>();
        tree.Enqueue(children);
        
        while (tree.Count != 0)
        {
            IList<TableTree> current = tree.Dequeue();
            nodesToRemove.AddRange(current);
            
            foreach (TableTree child in current)
            {
                children = _Entity.TableTree.Where(c => c.ParentId == child.Id).ToList();
                if (children.Count != 0)
                {
                    tree.Enqueue(children);
                }
            }
        }
    }
    
    foreach (TableTree nodeToRemove in nodesToRemove)
    {
        _Entity.TableTree.Remove(nodeToRemove);
    }
}
 
Share this answer
 
Comments
Ali Majed HA 1-Nov-16 0:18am    
Thanks in Advance for your help

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900