Почему перегрузка Distinct() не принимает делегата сравнения (или аналогичного)?

При использовании оператора запроса Distinct() типы в запрашиваемой последовательности должны либо обеспечивать подходящие перегрузки GetHashCode() и Equals(), либо вы должны передать реализацию IEqualityComparer.

Мой вопрос: почему нет перегрузки Distinct(), принимающего экземпляр Delegate (например, Comparison)? - Если бы он существовал, можно было бы передать более легкое лямбда-выражение (более легкое, чем реализация IEqualityComparer). - Я что-то здесь упускаю?

2 ответа

Решение

Потому что он использует GetHashCode(),
Вы не можете создать делегата, который дает хэш-коды.

Это может занять два делегата, но это может сбить с толку.

Было бы лучше спросить, почему нет DistinctBy() метод, который принимает проекцию.

В противном случае вы можете попробовать MoreLINQ и его метод DistincBy

Другие вопросы по тегам