c# copied property loses reference when referenced object is removed from list
===

**Example**

Have a look at the following code:

    private void DeDuplicateOrganisations()
    {
         var profileOrgs = _organisations.Where(o => o.ExistsInProfile).ToList();
         var kvkOrgs = _organisations.Where(o => !o.ExistsInProfile).ToList();
    
         profileOrgs.ForEach(o =>
             {
                 var duplicate = kvkOrgs.FirstOrDefault(k => k.KvK == o.KvK || k.Title == o.Title);
                 if (duplicate != null)
                 {
                      o.CompanyInfoOrganisation = duplicate.CompanyInfoOrganisation;
                      o.ExistsInBoth = true;
                      kvkOrgs.Remove(duplicate);
                  }
               });
    
          _organisations = profileOrgs.Concat(kvkOrgs).OrderBy(o => o.Title).ToList();
    }

In this example the property `CompanyInfoOrganisation` (simply a get; set; property) is copied when an organisation is considered a duplicate. This all works as expected, duplicates are nicely deduplicated. 

Also this is true inside this message:  
`_organisations.First(o => o.ExistsInBoth).CompanyInfoOrganisation != null;`


**Problem**

Now I bind the `_organisations` list to a listbox and later on get the selected value. If I try to read the `CompanyInfoOrganisation` property I always get null while I know the property was set.

**Question**

What is happening here? How come the property reference is destroyed? How can I prevent this from happening?
