Оптимизация LINQ-запроса

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());