Linq:创建一个列表,列出List中每个节点的左右子节点

时间:2016-11-22 09:50:28

标签: c# linq

我有一个List节点,其中Node是

public class Node
{
 public Node Left
 public Node Right
}

我想提取一个如下所示的列表:

{nodes[0].Left, nodes[0].Right, nodes[1].Left, nodes[1].Right, ...}

我正在尝试使用Aggregate,Concat,Select和SelectMany

2 个答案:

答案 0 :(得分:3)

使用SelectMany

var result = list.SelectMany(x=>new List<Node>(){x.Left, x.Right}).ToList();

答案 1 :(得分:0)

试试这个:

var qry =
    from node in nodes
    let nodeValues = new Node[] { node.Left, node.Right }
    from subnode in nodeValues
    select subnode;

这最终会在SelecMany中恢复,只是在查询语法中。