Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 10th, 2012  |  syntax: None  |  size: 0.60 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var series = EnumerableEx.Generate(fixture.Min(x => x.Time), x => x <= fixture.Max(y => y.Time), x => x.AddMinutes(5.0), x => x)
  2.         .Select(x => new { Key = x, Sum = lookup[x].Sum(y => y.ProductivityInSeconds), Len = lookup[x].Count()})
  3.         .Aggregate(new {List = new List<DateTime>(), Secs = 0.0}, (acc, x) => {
  4.                 var toAdd = x.Sum;
  5.                 if (x.Len == 0) {
  6.                         toAdd = 60.0 * (acc.Secs > 0 ? -1.0 : 1.0);
  7.                 }
  8.                 var secs = (acc.Secs + toAdd).Clamp(-10 * 60.0, 5 * 60.0);
  9.                 if (secs <= -10 * 60.0 && x.Sum != 0.0) {
  10.                         acc.List.Add(x.Key);
  11.                         secs += 5 * 60.0;
  12.                 }
  13.  
  14.                 return new {acc.List, Secs = secs};
  15.         }).List;