2016-11-04 90 views
3

一個有一個包含九月,十月,十一月不過我想特別添加每個月如何獲得每月的總和?

Start Time     EndTime 
September 11,2016 5:00PM September 11,2016 8:00PM 
September 12,2016 10:00AM September 12,2016 8:00PM 
October 1,2016 5:00PM  September 11,2016 8:00PM 
October 2,2016 10:00AM  September 12,2016 8:00PM 
November 1,2016 5:00PM  November 11,2016 8:00PM 
November 2,2016 10:00AM November 12,2016 8:00PM 

我的代碼集合列表

List<MonthHours> oList=new List<MonthHours>(); 
Int total=0; 
TimeSpan span=new TimeSpan(); 
foreach(var data in oList) 
{ 
Span=data.EndTime-data.StartTime; 
Total+=span.hours; 
} 

我把所有的款項九月至十一月期間,我實際上想要的是獲得sumb按月示例在9月份,我得到了3小時,10月5小時,11月5小時。

對不起新手TIA

+0

是一個電子表格,安排每一個總結? –

+0

您可以使用linq按data.starttime.month分組,然後總結時間段 – Nkosi

+0

它是一個Property集合。請幫我解決 –

回答

2
var result = oList 
    .GroupBy(data => data.StartTime.ToString("MMMM")) 
    .Select(g => new MonthHours { 
     Month = g.Key, 
     Total_Hours = g.Sum(d => (d.EndTime - d.StartTime).TotalHours) 
    }); 

foreach (var month in result) { 
    var str = string.Format("Month : {0}, Total Hours : {1}", month.Month, month.Total_Hours); 
} 
+0

你能解釋一下什麼是G.KEY,它做什麼?所以我可以理解代碼。 –

+0

檢查此https://msdn.microsoft.com/en-us/library/bb384063.aspx – Nkosi

+0

哇謝謝你這麼多我的問題近一個星期終於解決了。我是一名初級軟件開發人員,非常感謝。這真的是一個很大的幫助。 –

1

集團通過您的按日期列出每月 然後選擇所有差異

var grouped = oList.GroupBy(d=>StartTime.Month).Select(c=>c.Sum(d=>(d.EndTime-d.StartTime)).ToArray();