我想知道爲什麼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