Следует помнить, что, хотя вы создаете два экземпляра (два разных выделения памяти) List, вы создаете только один экземпляр Dictionary.
Таким образом, оба списка имеют одинаковыйуказатель памяти, указывающий на тот же словарь.И очевидно, что изменение в одном обновит и другое.
Как предлагают другие, здесь вам нужно создать еще один экземпляр Dictinary (отдельное распределение памяти) и скопировать значения первого
Dictionary<string, string> ld2 = new Dictionary<string, string>(ld1);
В этом случае в списке будут храниться разные экземпляры, а изменения в одном не повлияют на другие.