2016-11-04 92 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();