Вы также можете попробовать
list1.addRange(list2)
then next line would be a simple list1.Distinct(X=>x.Key1).ToList();
ИЛИ будет просто:
list1.Except(list2,IEqualityComparer);
Для этого вам потребуется реализовать метод equals.
Другойможно было бы реализовать Union
var result = List1.Union(List2, myEqualityComparer);
, который использует ту же логику, что и исключающий, есть несколько способов обмануть конечный результат, используя ссылку, большинство из них неэффективны и требуют много времени для вычисления