using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { var records = new List { new Record { Id = 1, StartDate = new DateTime(2013, 1, 1, 10, 20, 0), EndDate = new DateTime(2013, 1, 1, 10, 25, 0)}, new Record { Id = 1, StartDate = new DateTime(2013, 1, 1, 10, 40, 0), EndDate = new DateTime(2013, 1, 1, 11, 15, 0)}, new Record { Id = 2, StartDate = new DateTime(2013, 1, 2, 10, 20, 0), EndDate = new DateTime(2013, 1, 2, 10, 25, 0)}, new Record { Id = 1, StartDate = new DateTime(2013, 1, 2, 11, 20, 0), EndDate = new DateTime(2013, 1, 2, 12, 22, 0)}, }; var query = from r in records group r by new { r.Id, r.StartDate.Date } into g select new { g.Key.Id, g.Key.Date, TotalDuration = g.Sum(x => (x.EndDate - x.StartDate).TotalMinutes) }; foreach(var item in query) Console.WriteLine("{0} {1} {2} min", item.Id, item.Date.ToShortDateString(), item.TotalDuration); } } public class Record { public int Id { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public int Chapter { get; set; } }