我有一个节点集合,每个节点都可以有一个父节点。如果父节点存在,我想将它作为子节点插入(即:父节点将成为它自己的子节点),但如果可能的话,我正在努力寻找一种使用 linq 执行此操作的方法。
我的非 linq 尝试:
private IList<IPageNode> addParentNode(IList<IPageNode> nodes) {
if (nodes[0].parent == null) return nodes;
var parentWithoutChildren = new PageNode {
name = nodes[0].parent.name,
isNavigable = nodes[0].parent.isNavigable,
url = nodes[0].parent.url,
children = null,
parent = null
};
nodes.Insert(0, parentWithoutChildren);
return nodes;
}
到目前为止我所做的工作,但有两个问题:
- 这与 linq 无关,我假设 linq 将是实现这一目标的最有效/最有效的方法。
- 传入的对象正在被操纵、更改和返回,我不能让这种情况发生。我知道我可以创建一个新对象并将其返回,但如果可能的话,我想学习一些新的东西。