C#:计算LinkedList中节点之间的元素数

And*_*son 0 c# linked-list

我想计算System.Collections.Generic.LinkedList中起始节点和结束节点之间的节点总数,类似于C++中的STL算法std :: count(除了我打算将末端节点包含在计数).

我无法弄清楚如何使用任何LINQ扩展方法来有效地计算这个数字,所以我已经实现了这样的计数器(不包括所有空值和一致性检查):

var counter = 1;
var node = iStartNode;
while (!ReferenceEquals(node, iEndNode))
{
  node = node.Next;
  ++counter;
}
Run Code Online (Sandbox Code Playgroud)

但必须有一个更有效的解决方案,一定不是吗?任何建议都非常感谢.

Dav*_*nan 6

我相信您的解决方案是最有效的,也是最具可读性的.即使你能在LINQ中找到一个实现,它肯定会是曲折的.

通过排除null检查,我认为你的意思是真正的代码不会node在列表末尾运行时抛出.