Я думаю, вы довольно близки.
var dateUsedMostOften = (from d in dates
group d by d.Year into y
orderby y.Count() descending
select y).First().Key;
непроверенная. Посмотрите, работает ли это.
Примечание. Если в списке нет элементов, это, вероятно, завершится ошибкой. Вы можете обойти это, вызвав FirstOrDefault () и проверив, вернул ли он значение null. Ищите только ключ. Если вы знаете, что он не равен нулю.