Man*_*ani 9 .net c# dictionary anonymous-class
使用字典时,我总是覆盖GetHashCode和Equals(或者为字典提供自定义比较器).
当我创建一个匿名类作为键时,封面后面会发生什么?
示例代码....
var groups=(from item in items
group item by new { item.ClientId, item.CustodianId, item.CurrencyId }
into g
select new {
Key=g.Key,
Sum=g.Sum(x => x.Cash)
}).ToDictionary(item=>item.Key,item=>item.Sum);
Run Code Online (Sandbox Code Playgroud)
这段代码给了我预期的结果,但我没有为匿名类提供GetHashCode和Equals方法.这段代码不应该根据匿名类中的项目对我的项目进行分组吗?
Jon*_*eet 17
不 - 匿名类自动生成适当的Equals/GetHashCode实现.
从C#语言规范,第7.5.10.6节:
匿名类型上的Equals和GetHashcode方法重写从object继承的方法,并根据属性的Equals和GetHashcode定义,因此当且仅当所有属性相等时,同一匿名类型的两个实例才相等.