Отладчик — лучший друг программиста. 
Метод Add из класса Node:
public void Add(T data)
        {
            var node=new Node<T>(data);
             if (node.Data.CompareTo(Data) == -1)
// other code…
}
А теперь внимательно посмотрите на блок if и ответьте на 2 вопроса:
1) Какие значения сравниваются?
2) Какие значения должны сравниваться?
Метод CompareTo из класса Node
public int CompareTo(object? obj)
        {
            if(obj is Node<T> item)
            {
                return Data.CompareTo(item);
            }
            else
            {
                throw new ArgumentException("Типы не совпадают");
            }
Какие типы данных Вы тут сравниваете?
P.S. По поводу интерфейса IComparable. Не совсем корректно сравнивать значение возвращаемое методом CompareTo на строгое равенство с 1/-1. Для int это будет работать, для других типов не факт. Почитайте внимательно описание интерфейса в документации.