EnumerableObject : IEnumerable<Foo>
обертывает a List<Foo>
Если EnumerableObject a.SequenceEquals( EnumerableObject b), то они равны.
Следовательно, a GetHashCode должен быть реализован. Проблема в том, что XOR каждый элемент в списке возвращает тот же хеш-код для любого списка со всеми и только с теми же элементами, независимо от порядка. Это нормально с точки зрения его работы, но приведет к многочисленным столкновениям, что замедлит поиск и т.д.
Что такое хороший, быстрый метод GetHashCode для списков объектов, зависящих от порядка?