fork(1) download
  1. using System;
  2. using System.Linq;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5.  
  6. public class Order
  7. {
  8. public DateTime Date { get; set; }
  9. public int Id { get; set; }
  10. }
  11.  
  12. public class OrderDateSummary {
  13. public DateTime Date { get; set; }
  14. public int Total { get; set; }
  15. }
  16.  
  17. public class Test
  18. {
  19. public static void Main()
  20. {
  21. DateTime start = new DateTime(2016, 1, 1);
  22. DateTime end = new DateTime(2016, 1, 4);
  23.  
  24. List<Order> orderList = new List<Order>()
  25. {
  26. new Order() { Date = new DateTime(2016, 1, 1, 10, 10, 10), Id = 1 },
  27. new Order() { Date = new DateTime(2016, 1, 1, 12, 10, 10), Id = 2 },
  28. new Order() { Date = new DateTime(2016, 1, 1, 0, 10, 10), Id = 3 },
  29. new Order() { Date = new DateTime(2016, 1, 2, 1, 10, 4), Id = 4 },
  30. new Order() { Date = new DateTime(2016, 1, 2, 2, 4, 2), Id = 5 },
  31. new Order() { Date = new DateTime(2016, 1, 4, 1, 0, 4), Id = 6 },
  32. new Order() { Date = new DateTime(2016, 1, 4, 1, 3, 3), Id = 7 },
  33. new Order() { Date = new DateTime(2016, 1, 4, 2, 2, 2), Id = 8 },
  34. };
  35.  
  36. var res = Enumerable
  37. .Range(0, 1 + (end - start).Days)
  38. .Select(x => start.AddDays(x))
  39. .GroupJoin(orderList,
  40. dt => dt, o => o.Date.Date,
  41. (dt, orders) => new OrderDateSummary { Date = dt, Total = orders.Count() })
  42. .ToList();
  43.  
  44. foreach(var ods in res)
  45. Console.WriteLine("{0} - {1}", ods.Date, ods.Total);
  46. }
  47. }
Success #stdin #stdout 0.09s 24288KB
stdin
Standard input is empty
stdout
1/1/2016 12:00:00 AM - 3
1/2/2016 12:00:00 AM - 2
1/3/2016 12:00:00 AM - 0
1/4/2016 12:00:00 AM - 3