var sw = Stopwatch.StartNew(); for (int i = 0; i new { Id = c.Id, UploadedDate = c.UploadedDate }) .Where(c => c.UploadedDate > this.monthAgo) .ToArray() .GroupBy(c => c.UploadedDate.Date) .Select(c => new { Date = c.Key, Count = c.Count() }) .OrderByDescending(c => c.Date) .ToDictionary(c => c.Date, c => c.Count); } sw.Stop(); System.Diagnostics.Trace.WriteLine("SW1: " + sw.ElapsedMilliseconds.ToString()); sw.Restart(); for (int i = 0; i c.UploadedDate > this.monthAgo) .ToArray() .GroupBy(c => c.UploadedDate.Date) .OrderByDescending(c => c.Key.Date) .ToDictionary(c => c.Key, c => c); } sw.Stop(); System.Diagnostics.Trace.WriteLine("SW2: " + sw.ElapsedMilliseconds.ToString());