Почему перегрузка Distinct() не принимает делегата сравнения (или аналогичного)?
При использовании оператора запроса Distinct() типы в запрашиваемой последовательности должны либо обеспечивать подходящие перегрузки GetHashCode() и Equals(), либо вы должны передать реализацию IEqualityComparer
Мой вопрос: почему нет перегрузки Distinct(), принимающего экземпляр Delegate (например, Comparison
2 ответа
Потому что он использует GetHashCode()
,
Вы не можете создать делегата, который дает хэш-коды.
Это может занять два делегата, но это может сбить с толку.
Было бы лучше спросить, почему нет DistinctBy()
метод, который принимает проекцию.
В противном случае вы можете попробовать MoreLINQ и его метод DistincBy