如何在删除父节点时删除子节点 [英] How to remove childnodes on deleting parent node
本文介绍了如何在删除父节点时删除子节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好
我有一棵树:
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屋!
查看全文