При использовании словаря я всегда переопределяю GetHashCode, и Равняется (или предоставьте пользовательский компаратор словарю).
Что происходит позади покрытий, когда я создаю анонимный класс как ключ?
Пример кода....
var groups=(from item in items
group item by new { item.ClientId, item.CustodianId, item.CurrencyId }
into g
select new {
Key=g.Key,
Sum=g.Sum(x => x.Cash)
}).ToDictionary(item=>item.Key,item=>item.Sum);
Этот код дает мне ожидаемый результат, но я не обеспечиваю GetHashCode и Равняюсь методу для анонимного класса. Разве это не должно кодировать сбой для группировки моих объектов на основе объектов в анонимном классе??
Нету - анонимный класс автоматически генерирует соответствующие реализации / gethashcode.
С точки зрения языка C #, раздел 7.5.10.6:
Theal и методы GethashCode Анонимные типы переопределяют методы унаследовано от объекта и определены С точки зрения равных и GethashCode свойств, так что два экземпляры того же анонимного типа равны, если и только если все их свойства равны.