我一直在使用LINQ到对象很长一段时间,但我现在才注意到Enumerable.ToLookup
扩展方法并阅读其文档。我在寻找获得IEnumerable<T>
的只读接口的最快方法时遇到了它。在我看来,将.ToLookup( o => o )
附加到System.Linq.Lookup
对象中的可枚举结果中可以起到与ReadOnlyCollection<T>
相同的作用。
那么我为什么要再次创建ReadOnlyCollection<T>
的直接实例?
答案 0 :(得分:3)
在概念上,查找与只读可枚举相同。它更像是一个字典,每个键都有多个值,用于按键查找匹配值。调用ToLookup
完全枚举输入并构建查找。
ReadOnlyCollection<T>
因为它只包装任何IList<T>
,并且只将只读界面的语义与IEnumerable<T>
相匹配,所以便宜得多。