Is this what you're aiming for?
var myKeys = new List<MyKey>(); var myDict = myKeys.Distinct().ToDictionary(x => x, x => 0);
If you made any changes to the myKeys list they wouldn't be carried over to the dictionary, however any changes to the MyKey objects would be preserved.