protected override void RemoveExisting(Drop <ContainerDestination> drop) { var existingPosition = Drops.FirstOrDefault(x => x.Bay == drop.Bay && x.Row == drop.Row); if (existingPosition != null) { Drops.Remove(existingPosition); if (existingPosition.Data.Container.Size == ContainerSize.FortyFoot) { string rowNumber = existingPosition.Row; string rightBayNumber = (int.Parse(existingPosition.Bay) + 1).ToString(); string leftBayNumber = (int.Parse(existingPosition.Bay) - 1).ToString(); existingPosition = Drops.FirstOrDefault(x => x.Bay == rightBayNumber && x.Row == rowNumber); if (existingPosition == null) { existingPosition = Drops.FirstOrDefault(x => x.Bay == leftBayNumber && x.Row == rowNumber); } Drops.Remove(existingPosition); } } foreach (var objectDrop in Drops.Where(x => x.Data.GetHashCode() == drop.Data.GetHashCode()).ToArray()) { Drops.Remove(objectDrop); } }