public static LinkedListNode <T> FindFirst <T>(this LinkedList <T> list, LinkedListNode <T> startNode, Predicate <T> match) { foreach (var node in startNode.GetNodes()) { var value = node.Value; if (match(value)) { return(node); } } return(null); }