Use:
WHEN MATCHED AND '+REPLACE(REPLACE(C.UpdateColumns,'=',''),',',' OR ')+'
Result:
Tgt.[DateID]Src.[DateID] OR Tgt.[ProductID]Src.[ProductID] OR ...
I think here the sign '<>' is omitted?
h.e. Tgt.[DateID]<>Src.[DateID] OR Tgt.[ProductID]<>Src.[ProductID] OR ...