按日期分组,然后按总和分组
本文关键字:然后 日期 | 更新日期: 2023-09-27 18:07:04
我有以下模型:
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);
}
在结果集中,值是相同的。
这里有什么问题?
谢谢。
我认为这只是一个复制/粘贴失败。您为ChartModel
中的3个属性选择了e.LateEntry
。
考虑改变
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(),
});