Linked object for creating chains without lists
Rule your own Find extension method instead of redoing it all over again.

public static LinkedListNode&lt;T&gt; Find&lt;T&gt;(this LinkedList&lt;T&gt; list, Predicate&lt;T&gt; pred)
{
    var node = list.First;
    while (node != null)
    {
        if (pred(node.Value))
        {
            return node;
        }
        node = node.Next;
    }
    return null;
}