按日期汇总值

时间:2017-11-27 09:44:56

标签: c# linq

public class Results
{
    public DateTime Date {get; set;}
    public decimal Result {get; set;}
}
public class Sums
{
    public decimal YearlySum {get; set;}
    public decimal MonthlySum {get; set;}
    public DateTime Date {get; set;}
}

我有一个Results对象的集合。

我想根据日期填写每月,每月总和的总和列表。

YearlySum是所提供日期年份(直到提供日期)的所有结果值的总和,而MonthlySum是提供日期月份(直到提供日期)的结果值之和

如何使用Linq?

1 个答案:

答案 0 :(得分:1)

像这个函数应该做的工作:

public Sum GetSumFromResultsAndDate(IEnumerable<Results> results, DateTime date) {
    return new Sum {
        Date = date,
        MonthlySum = results
            .Where(r => r.Date.Year == date.Year && r.Date.Month == date.Month && r.Date <= date)
            .Sum(r => r.Value) ,
        YearlySum = results
            .Where(r => r.Date.Year == date.Year && r.Date <= date)
            .Sum(r => r.Value)
    }
}

(使所有结果的总和与月度总和的提供日期相同,并且所有结果的总和与年度总和的提供日期相同)

编辑:添加&#34;结果日期低于提供的日期&#34;根据问题澄清的条件