比较列表项条件会引发堆栈溢出异常

时间:2018-11-08 10:43:29

标签: c# linq

我有一个节点列表,每个节点都有对其上一个节点和下一个节点的引用。我想要一个不共享下一个或上一个节点的节点列表。换句话说,是未排序的节点列表。

 nodes= nodes.Where(o => !nodes.Any(oo => ReferenceEquals(oo.NextNode, o.PreviousNode)));

它抛出此异常

  

NodeLib.dll中发生了'System.StackOverflowException'类型的未处理异常

我不知道自己缺少什么或误会了。预先谢谢你!

1 个答案:

答案 0 :(得分:1)

我认为您的问题是比较列表的方式,您想将列表与自身进行比较,请尝试以下操作:

var test = from i in nodes
    from j in nodes.SkipWhile(j => j != i)
    where i != j
    select ReferenceEquals(i.NextNode, j.PreviousNode);

链接-> Efficient list self compare in LINQ?