void Summarize(IEnumerable<Section> sections)
{
this.DateBegin = sections.Select(s => s.Date).Min();
this.DateEnd = sections.Select(s => s.Date).Max();
this.Income = sections.Where(s => s.IsIncome).Sum(r => r.Amount);
this.Expenditure = sections.Aggregate(0, (agg, next) =>
agg += (next.IsExpenditureBank ? next.Amount : 0) +
(next.IsExpenditureClient ? next.Amount : 0));
}
Как это?
EDIT:
Хорошо, я переосмыслил, посмотрите:
void Summarize(IEnumerable<Section> sections)
{
var result = sections.Aggregate(new
{
DateBegin = DateTime.MaxValue,
DateEnd = DateTime.MinValue,
Income = 0,
Expenditure = 0
},
(agg, next) =>
new
{
DateBegin = next.Date < agg.DateBegin ? next.Date : agg.DateBegin,
DateEnd = next.Date > agg.DateEnd ? next.Date : agg.DateEnd,
Income = agg.Income + (next.IsIncome ? next.Amount : 0),
Expenditure = agg.Expenditure + (next.IsExpenditureBank ? next.Amount : 0) +
(next.IsExpenditureClient ? next.Amount : 0)
}
);
}
Остерегайтесь ошибок, если sections
пусто.