我想知道为什么GroupBy使用匿名类型。LINQ 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算法做了一些我还没有想到的魔法?
不,它不调用'ToString'。它调用'GetHashCode'和'Equals'。 – StriplingWarrior 2012-03-20 19:39:50
我的坏,我删除它。
如何做删除线?– OmegaMan 2012-03-20 19:57:01罢工标签应该在你的实际文章中工作。虽然他们显然在评论中逃脱了。 – StriplingWarrior 2012-03-20 20:13:08