按日期分组然后求和

达斯维达

我有以下模型:

public class MonthReport
{
    public int Id { set; get; }
    public DateTime MonthYear { set; get; }
    public int LateEntry { set; get; }
    public int LeftEarly { set; get; }
    public int TotalAttandence { set; get; }
    public int Great { set; get; }
    public int PersonelId { set; get; }
    public Personel Personel { set; get; }
}

哪个首先使用代码映射到db。

我想按月和年对报告进行分组,然后我要获取该特定月份的LateEntry,LeftEarly和其他int值的总和。

我有以下代码片段,无法返回正确的内容。

    public ActionResult GetReportsGroupedByMonth()
    { 
        var results = _db.MonthReports
                         .GroupBy(
                            x => new
                            {
                                Month = x.MonthYear.Month,
                                Year = x.MonthYear.Year
                            }, 
                            (key, g) => 
                                new ChartModel
                                {
                                    Date = g.Select(v=>v.MonthYear).FirstOrDefault(),
                                    GreatDay = g.Select(e=>e.Great).Sum(),
                                    LateEntry = g.Select(e => e.LateEntry).Sum(),
                                    LeftEarly = g.Select(e => e.LateEntry).Sum(),
                                    TotalAttendance = g.Select(e => e.LateEntry).Sum(),
                                });

        return Json(results, JsonRequestBehavior.AllowGet);
    }

在结果集中,值相同。

这是什么问题?

谢谢。

杰里米·威金斯(Jeremy Wiggins)

我认为这只是复制/粘贴失败。您已e.LateEntry在中为3个属性选择/汇总ChartModel

考虑改变


new ChartModel
    {
        Date = g.Select(v=>v.MonthYear).FirstOrDefault(),
        GreatDay = g.Select(e=>e.Great).Sum(),
        LateEntry = g.Select(e => e.LateEntry).Sum(),
        LeftEarly = g.Select(e => e.LateEntry).Sum(),
        TotalAttendance = g.Select(e => e.LateEntry).Sum(),
    });


new ChartModel
    {
        Date = g.Select(v=>v.MonthYear).FirstOrDefault(),
        GreatDay = g.Select(e=>e.Great).Sum(),
        LateEntry = g.Select(e => e.LateEntry).Sum(),
        LeftEarly = g.Select(e => e.LeftEarly).Sum(),
        TotalAttendance = g.Select(e => e.TotalAttendance).Sum(),
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章