2013-06-12 81 views
3
按日期和編號分組

我的數據是這樣的計算總時間使用LINQ

ID | START_DATE   | END_DATE    | Chapter 
1  01/03/2013 05:15:14  01/03/2013 06:20:14   1 
1  01/03/2013 06:25:33  01/03/2013 06:40:11   2 
2  01/03/2013 05:01:34  01/03/2013 05:30:13   1 
2  01/03/2013 05:31:20  01/03/2013 06:30:13   2 
2  01/03/2013 06:32:20  01/03/2013 07:20:01   3 
1  02/03/2013 05:15:14  01/03/2013 06:20:14   1 
1  02/03/2013 06:25:33  01/03/2013 06:40:11   2 

我想這樣

ID | Date   |  Total Duration 
1  01/03/2013   Time in Minutes 
1  02/03/2013   Time in Minutes 
2  02/03/2013   Time in Minutes 

結果有一種方法使用C#與LINQ做到這一點?

+1

您用'linq-to-objects'標籤標記了問題。你在操作什麼對象? –

+0

我的對象是一個列表和「T」對象具有該表的字段。這有幫助嗎? –

回答

5

項目分組依據日期和id,並計算持續時間的總和爲每個組:

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

這裏是working program

+0

我確實喜歡你說的方式,並且我收到了消息「Cant cast timespan to decimal。」,我猜是因爲Sum方法收到Func 更新:對不起,我犯了一個錯誤。 –

+1

@RenatoRamosNascimento我添加了鏈接到程序演示此查詢 –