当使用查询运算符Distinct()时,查询序列中的类型必须提供适当的GetHashCode()和Equals()重载,或者必须传递IEqualityComparer< T>的实现。
我的问题:为什么Distinct()没有超载接受委托实例(例如比较< T>)? - 如果它存在,则可以传递更轻量级的lambda表达式(比IEqualityComparer< T>的实现更轻量级)。 - 我在这里错过了什么吗?
答案 0 :(得分:4)
因为它使用GetHashCode()
您不能创建一个提供哈希码的委托。
这可能需要两名代表,但这会令人困惑。
最好问为什么没有DistinctBy()
方法进行投影。
答案 1 :(得分:1)
否则你可以试试MoreLINQ及其方法DistincBy