1

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

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

4

2 回答 2

4

因为它使用GetHashCode().
您不能委托提供哈希码。

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

最好问一下为什么没有一种DistinctBy()方法可以进行投影。

于 2011-11-17T19:33:22.983 回答
1

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

于 2011-11-17T19:35:08.887 回答