Linq 为什么不存在接受比较委托(或类似委托)的Distinct()重载

Linq 为什么不存在接受比较委托(或类似委托)的Distinct()重载,linq,linq-to-objects,distinct,iequalitycomparer,Linq,Linq To Objects,Distinct,Iequalitycomparer,使用查询运算符Distinct时,查询序列中的类型必须提供适当的GetHashCode和Equals重载,或者必须传递IEqualityComparer的实现 我的问题:为什么不存在接受委托实例(例如比较)的超负荷如果存在一个更轻的lambda表达式,则可以传递一个比IEqualityComparer实现更轻的lambda表达式。-我是不是遗漏了什么 因为它使用GetHashCode。 不能创建提供哈希代码的委托 可能需要两名代表,但这会让人困惑 最好问问为什么没有一个采用投影的Distinct

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

我的问题:为什么不存在接受委托实例(例如比较)的超负荷如果存在一个更轻的lambda表达式,则可以传递一个比IEqualityComparer实现更轻的lambda表达式。-我是不是遗漏了什么

因为它使用GetHashCode。 不能创建提供哈希代码的委托

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

最好问问为什么没有一个采用投影的DistinctBy方法。

因为它使用GetHashCode。 不能创建提供哈希代码的委托

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


最好是询问为什么没有一个DistinctBy方法可以进行投影。

否则你可以尝试,它的方法DistincBy

否则你可以尝试,它的方法DistincBy

Distinct将检查Equals和GetHashCode,如果它必须。。。你认为你能提供多轻的lambda?可能是Hi-ErOx的复制品!我提出了一个类似于Tor Haugen在Distinct with lambda?中提出的解决方案:var distinctValues=myCustomerList.Distinctc1,c2=>c1.CustomerId==c2.CustomerId;嗨,马格纳斯!嗯,我没有找到托尔的问题,所以我的问题是重复的,是的!谢谢你的评论!但只有当你想考虑的是一个单一的财产时才行。这通常不是人们想要的。但是,如果这是您想要的,那么我会说Jon Skeet的答案和实现就是要走的路,即DistinctByx=>x.PropertyNameYes,我知道Jon的DistinctBy,也许真正的问题是,为什么这不是解释SLaks答案的标准查询操作符。但我认为,通常您需要比较单个项,这是一个典型的情况..Distinct将检查Equals和GetHashCode,如果必须的话。。。你认为你能提供多轻的lambda?可能是Hi-ErOx的复制品!我提出了一个类似于Tor Haugen在Distinct with lambda?中提出的解决方案:var distinctValues=myCustomerList.Distinctc1,c2=>c1.CustomerId==c2.CustomerId;嗨,马格纳斯!嗯,我没有找到托尔的问题,所以我的问题是重复的,是的!谢谢你的评论!但只有当你想考虑的是一个单一的财产时才行。这通常不是人们想要的。但是,如果这是您想要的,那么我会说Jon Skeet的答案和实现就是要走的路,即DistinctByx=>x.PropertyNameYes,我知道Jon的DistinctBy,也许真正的问题是,为什么这不是解释SLaks答案的标准查询操作符。但是你经常想比较一个项目,我认为,这是一个典型的例子。。