fork(2) download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5.  
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10.  
  11. var records = new List<Record>
  12. {
  13. new Record { Id = 1, StartDate = new DateTime(2013, 1, 1, 10, 20, 0), EndDate = new DateTime(2013, 1, 1, 10, 25, 0)},
  14. new Record { Id = 1, StartDate = new DateTime(2013, 1, 1, 10, 40, 0), EndDate = new DateTime(2013, 1, 1, 11, 15, 0)},
  15. new Record { Id = 2, StartDate = new DateTime(2013, 1, 2, 10, 20, 0), EndDate = new DateTime(2013, 1, 2, 10, 25, 0)},
  16. new Record { Id = 1, StartDate = new DateTime(2013, 1, 2, 11, 20, 0), EndDate = new DateTime(2013, 1, 2, 12, 22, 0)},
  17. };
  18.  
  19.  
  20. var query = from r in records
  21. group r by new { r.Id, r.StartDate.Date } into g
  22. select new
  23. {
  24. g.Key.Id,
  25. g.Key.Date,
  26. TotalDuration = g.Sum(x => (x.EndDate - x.StartDate).TotalMinutes)
  27. };
  28.  
  29. foreach(var item in query)
  30. Console.WriteLine("{0} {1} {2} min", item.Id, item.Date.ToShortDateString(), item.TotalDuration);
  31. }
  32. }
  33.  
  34. public class Record
  35. {
  36. public int Id { get; set; }
  37. public DateTime StartDate { get; set; }
  38. public DateTime EndDate { get; set; }
  39. public int Chapter { get; set; }
  40. }
Success #stdin #stdout 0.06s 34280KB
stdin
Standard input is empty
stdout
1 1/1/2013 40 min
2 1/2/2013 5 min
1 1/2/2013 62 min