Вопрос

When using the query operator Distinct() the types in the queried sequence must either provide suitable overloads of GetHashCode() and Equals() or you have to pass an implementation of IEqualityComparer<T>.

My question: Why is there no overload of Distinct() accepting a Delegate instance (e.g. Comparison<T>)? - If it was existent a more lighweight lambda expression could be passed (more lightweight than an implementation of IEqualityComparer<T>). - Am I missing something here?

Это было полезно?

Решение

Because it uses GetHashCode().
You cannot make a delegate that gives hash codes.

It could take two delegates, but that would be confusing.

It would be better to ask why there isn't a DistinctBy() method that takes a projection.

Другие советы

otherwise you can try MoreLINQ and its method DistincBy

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top