Why is there no Overload of Distinct() accepting a Comparison Delegate (or similar)
-
03-03-2021 - |
質問
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