Лучший способ сделать это, который будет совместим с другими версиями .NET, - это переопределить Equals и GetHash, чтобы справиться с этим (см. вопрос о переполнении стека . Этот код возвращает различные значения. Однако, что я хочу, для возврата строго типизированной коллекции, в отличие от анонимного типа ), но если вам нужно что-то общее в вашем коде, решения в этой статье великолепны.
В целом, похоже, что почти все компиляторы поддерживают атрибуты GCC. MSVC - пока единственный компилятор, который их не поддерживает (и у которого также нет альтернативы).