Почему перегрузка Distinct () не принимает делегата сравнения (или аналогичного)? - PullRequest
1 голос
/ 17 ноября 2011

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

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

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

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

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

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

1 голос
/ 17 ноября 2011

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

...