如何在删除父节点时删除子节点 [英] How to remove childnodes on deleting parent node

查看:136
本文介绍了如何在删除父节点时删除子节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好

我有一棵树:



Id标题ParentId

1 A 0
2 B 1

3 C 2

4 D 3



如何删除所有孩子都在使用Entity框架和jqxTree删除A?



我尝试过:



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:

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是我在javascript文件中传递json数据的类。



提前致谢



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

Thanks in advance

推荐答案

尝试这样的事情:

Try something like this:
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);
    }
}


这篇关于如何在删除父节点时删除子节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆