1

我使用 LINQ-to-objects 已经有一段时间了,但我现在才注意到Enumerable.ToLookup扩展方法并阅读了它的文档。我在寻找获得只读接口的最快方法时遇到了它IEnumerable<T>。在我看来,附加.ToLookup( o => o )到可枚举的结果中会产生一个System.Linq.Lookup可以与ReadOnlyCollection<T>.

那么我为什么要再次创建一个直接实例ReadOnlyCollection<T>呢?

4

1 回答 1

3

从概念上讲,查找与只读可枚举不同。它更像是一个字典,其中每个键都有多个值,用于通过键查找匹配的值。调用ToLookup完全枚举输入并构建查找。

A 的ReadOnlyCollection<T>成本要低得多,因为它仅包装 any IList<T>,并且将只读接口的语义含义与 a 相匹配IEnumerable<T>

于 2013-01-05T00:26:26.067 回答