private static IEnumerable <CacheEntry> GetCacheUsage(IEnumerable <LogEntry> logEntries) { var cacheMisses = new List <LogEntry>(); var cacheEntries = new List <CacheEntry>(); var lastCacheEntryByKey = new Dictionary <string, CacheEntry>(); foreach (var logEntry in logEntries) { if (CacheEntry.IsCacheFill(logEntry)) { var cacheEntry = new CacheEntry(logEntry); cacheEntries.Add(cacheEntry); lastCacheEntryByKey[cacheEntry.Key] = cacheEntry; } else if (CacheEntry.IsCacheHit(logEntry) && lastCacheEntryByKey.TryGetValue(CacheEntry.GetKeyFromCacheHit(logEntry), out var cacheEntry)) { cacheEntry.AddHit(logEntry); } //else if (CacheEntry.IsCacheMiss(logEntry)) //{ // cacheMisses.Add(logEntry); //} } //var cacheMissesByKey = cacheMisses.ToLookup(CacheEntry.GetKeyFromCacheMiss); //foreach (var cacheEntry in cacheEntries) //{ //} return(cacheEntries); }