我有一个ILookup<TKey,TElement> lookup
,我经常使用LINQ或foreach
获取元素并遍历。我这样查找:IEnumerable<TElement> results = lookup[key];
。
因此,每次使用查找结果时都需要至少枚举一次results
(如果不先使用.ToList(),则在多次迭代时需要枚举更多次)。
尽管这样做不够“干净”,但使用Dictionary<TKey,List<TElement>>
是否更好(性能方面),以便从一个键中枚举所有结果仅在构建字典时进行?ToList()有多耗费性能?
results
时,ReSharper会警告我可能会多次枚举IEnumerable。如果我理解正确的话,我可以安全地忽略从ToLookup创建的ILookup的警告?(就像我可以忽略关于Count()的相同警告,因为它是O(1)吗?) - David S.