我在理解如何在 LINQ 中执行某些操作时遇到问题。
我有一个链表,对象的类型并不重要。重要的是我想做一些事情Where()
基于当前对象之间的关系以及列表中的下一个。
为什么我不能做类似的事情:
linkedlist.Where(n=>a_function(n.Value, n.Next.Value))
?
如果可能的话,执行此操作的语法是什么?类型推断系统似乎坚持认为我希望 lambda 参数是T
, not LinkedListNode<T>
.
您必须为链表编写新的迭代器才能做到这一点。就像是
public static class LinkedListExtensions
{
public static IEnumerable<LinkedListNode<T>> EnumerateNodes<T>(this LinkedList<T> list)
{
var node = list.First;
while(node != null)
{
yield return node;
node = node.Next;
}
}
}
所以你可以使用
linkedlist.EnumerateNodes().Where(n=>a_function(n.Value, n.Next.Value))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)