ToLookup与ReadOnlyCollection

时间:2013-01-05 00:23:40

标签: linq linq-to-objects

我一直在使用LINQ到对象很长一段时间,但我现在才注意到Enumerable.ToLookup扩展方法并阅读其文档。我在寻找获得IEnumerable<T>的只读接口的最快方法时遇到了它。在我看来,将.ToLookup( o => o )附加到System.Linq.Lookup对象中的可枚举结果中可以起到与ReadOnlyCollection<T>相同的作用。

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

1 个答案:

答案 0 :(得分:3)

在概念上,查找与只读可枚举相同。它更像是一个字典,每个键都有多个值,用于按键查找匹配值。调用ToLookup完全枚举输入并构建查找。

ReadOnlyCollection<T>因为它只包装任何IList<T>,并且只将只读界面的语义与IEnumerable<T>相匹配,所以便宜得多。