Searching for data in a table
For faster searching and since you're searching by different properties, one way would be a different dictionary for each property you want to search for. The indexing property is the key and the value can be the tablerowinfo object or if indexes may be duplicated a list of tablerowinfoinfo objects.

Dictionary&lt;NodeEntry, TableRowInfo&gt; nodeEntryIndex;
Dictionary&lt;int, TableRowInfo&gt; rowNumberIndex;
Dictionary&lt;object, TableRowInfo&gt; rowDataIndex;


Assuming you've implemented Add and Remove methods, simply add/remove the appropriate entries to the dictionaries, in those methods.

The Find method would look something like this:

internal TableRowInfo Find(NodeEntry nodeEntry)
{
    if (nodeEntryIndex.ContainsKey(nodeEntry))
    {
        return nodeEntryIndex[nodeEntry];
    }
    return null;
}


One suggestion.  When you inherit from a List like this, you expose all the members you've inherited from the list, outside the class.  If you're going to provide your own version for all of them that's fine.  However if you're only going to implement a subset of them then you might want to consider not inheriting but having a List as a private property to store the collection.  This gives you much more flexibility in choosing what gets exposed outside the class.

Another suggestion.  Instead of using object as the rowData type, the DataRow Class would probably be better suited for that.  This increase the robustness of your class.