为了账号安全,请及时绑定邮箱和手机立即绑定

LINQ选择与匿名类型不同

LINQ选择与匿名类型不同

C#
扬帆大鱼 2019-11-12 09:39:01
所以我有一个对象集合。确切的类型并不重要。因此,我要从中提取一对特定属性的所有唯一对,从而:myObjectCollection.Select(item=>new                                {                                     Alpha = item.propOne,                                     Bravo = item.propTwo                                }                 ).Distinct();所以我的问题是:在这种情况下,Disdistct是否会使用默认的对象等于(对我来说将是无用的,因为每个对象都是新的)还是可以被告知执行不同的等于(在这种情况下,Alpha和Bravo的值相等) =>相等的实例)?如果不这样做,是否有任何方法可以达到该结果?
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

简短的答案(我引用):


事实证明,C#编译器针对匿名类型覆盖了Equals和GetHashCode。这两个重写方法的实现使用类型上的所有公共属性来计算对象的哈希码并测试是否相等。如果相同匿名类型的两个对象的属性都具有相同的值,则这些对象相等。


因此,在返回匿名类型的查询上使用Distinct()方法是完全安全的。


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 287 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信