我有以下型号:
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);
}
在结果集中,值相同。
这里有什么问题?
感谢。
答案 0 :(得分:1)
我认为它只是复制/粘贴失败。您为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(),
});