Search code examples
linqlinq-to-objectsdistinctiequalitycomparer

Why is there no Overload of Distinct() accepting a Comparison Delegate (or similar)


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?


Solution

  • 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.