. Net – LINQ on LinkedList – iterates linkedlistnode instead of T

I'm having trouble understanding how to perform certain operations in LINQ

I have a linked list. The type of object doesn't matter The important thing is that I want to do something in where () based on the relationship between the current object and the next object in the list

Why can't I do this:

linkedlist. Where(n => a_function(n.Value,n.Next.Value))?

If possible, what is the syntax for doing so? The type inference system seems to insist that I want the lambda parameter to be t, not linkedlistnode < T >

Solution

You must create a new iterator for the linked list to do this It's like

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;
        }
    }
}

So you can use

linkedlist.EnumerateNodes().Where(n=>a_function(n.Value,n.Next.Value))
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>