为什么没有Overin of Distinct()接受比较代表(或类似)

时间:2011-11-17 19:32:16

标签: linq linq-to-objects distinct iequalitycomparer

当使用查询运算符Distinct()时,查询序列中的类型必须提供适当的GetHashCode()和Equals()重载,或者必须传递IEqualityComparer< T>的实现。

我的问题:为什么Distinct()没有超载接受委托实例(例如比较< T>)? - 如果它存在,则可以传递更轻量级的lambda表达式(比IEqualityComparer< T>的实现更轻量级)。 - 我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:4)

因为它使用GetHashCode() 您不能创建一个提供哈希码的委托。

这可能需要两名代表,但这会令人困惑。

最好问为什么没有DistinctBy()方法进行投影。

答案 1 :(得分:1)

否则你可以试试MoreLINQ及其方法DistincBy