我正在处理这个难题https://www.codingame.com/ide/puzzle/skynet-revolution-episode-2
在这个难题中,我必须阻止代理到达网络中的节点,每次转弯选择我想要切断的连接。我只能切断直接连接到网关的连接。
我有一个网关List<Node>
网关列表。
我已经使用包含直接邻居的List<Node>
连接初始化了每个节点
由于网关可以连接到多个节点,我感兴趣的是距离网关正好1个节点的节点,所以我可以识别哪个节点(让我们称之为exitNodes)代理最接近
如何将网关列表转换为退出节点列表? 我试过了
List<Node> exitNodes = gateways.Select(gw => gw.Connections).Select(node => node);
和这个
List<Node> exitNodes = gateways.Select(gw => gw.Connections.Select(node => node));
我收到错误
错误CS0266:无法隐式转换类型
System.Collections.Generic.IEnumerable<System.Collections.Generic.List<Node>>' to
System.Collections.Generic.List”。显式转换 存在(你是否错过演员表?)
答案 0 :(得分:2)
您必须使用SelectMany
。
如果您使用Select
,那么获得Enumerable<List<Node>>
,SelectMany
,您只能获得List<Node>
List<Node> exitNodes = gateways.SelectMany(gw => gw.Connections).Select(node => node).ToList();
这篇文章中的答案解释了SelectMany
和Select
之间的区别:
https://stackoverflow.com/a/959057/5056173