【发布时间】:2012-04-05 07:27:09
【问题描述】:
我想知道为什么 GroupBy 可以处理匿名类型。
List<string> values = new List<string>();
values.GroupBy(s => new { Length = s.Length, Value = s })
匿名类型不实现任何接口,所以我很困惑这是如何工作的。
我假设该算法通过为源中的每个项目创建一个匿名类型的实例并使用散列将这些项目组合在一起来工作。但是,没有提供 IEqualityComparer 来定义如何生成哈希或两个实例是否相等。然后,我假设 Object.Equals 和 Object.GetHashCode 方法将是后备方法,它们依赖于对象标识。
那么,它是如何按预期工作的?但它在 OrderBy 中不起作用。匿名类型会覆盖 Equals 和 GetHashCode 吗?还是底层的 GroupBy 算法做了一些我没有想到的魔法?
【问题讨论】:
标签: linq group-by anonymous-types