2016-11-04 5 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; 
} 

Я получил все суммы с сентября по ноябрь, Что я на самом деле хочу получить сумасшедший по месяцу Пример В сентябре я получил 3 часа, 5 октября, 5 ноября, в 5 часов.

К сожалению новичку ТИА

+0

является то, что организовать в таблице? –

+0

вы можете использовать linq для группировки data.starttime.month, а затем суммировать временные промежутки – Nkosi

+0

Это коллекция свойств. Пожалуйста, помогите мне с этим –

ответ

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

WOW благодарю вас, что моя проблема в течение почти недели окончательно решена. Im младший разработчик программного обеспечения, спасибо. Это действительно большая помощь. –

1

Group По вашему Список по дате месяц Затем выберите каждую сводку всех различий

var grouped = oList.GroupBy(d=>StartTime.Month).Select(c=>c.Sum(d=>(d.EndTime-d.StartTime)).ToArray(); 
Смежные вопросы