如何在Entity Framework和ASP.NET MVC 4中使用groupby子句?
问题描述:
我有一个admission
模型类,如下所示:如何在Entity Framework和ASP.NET MVC 4中使用groupby子句?
public class admission
{
public int AdmissionID {get;set;}
public DateTime Session {get;set;}
public string Class {get;set;}
public DateTime RegDate {get;set;}
}
我想入场的报告,使得每个月有多少学生被录取到学校当年。
例如:
Month No.Of.StudentsAdmitted
---------------------------------
Jan 20
Feb 2
March 10
April 5
and so on....
这里是我已经尝试了查询,但无法知道我究竟在做:
db.admissions
.Where(d => d.regDateTime.Value.Date.Year == DateTime.Now.Year)
.GroupBy(d => d.regDateTime.Value.Month)
.ToList();
我也想月份名称而不是月份值。
更简单的话,我要算学生人数在今年的每个月...
答
你基本上没有。你有分组名单,所以只需两个步骤仍然得到你想要的东西:
转换整型(一个月代码)月份名称:
var mo = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Key);
对于每个组,计数的项目数各组
g.Count()
把他们放在一起:
var resultset = admissions
.Where(dd => dd.RegDate.Date.Year == DateTime.Now.Year)
.GroupBy(ddda => ddda.RegDate.Month)
.Select(s => new
{
month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(s.Key),
count = s.Count()
}).ToList();
编辑:如果EF并发症AINS,可以随时移动ToList()起来,然后选择新的匿名对象:
var resultset = admissions
.Where(dd => dd.RegDate.Date.Year == DateTime.Now.Year)
.GroupBy(ddda => ddda.RegDate.Month)
.ToList()
.Select(s => new
{
month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(s.Key),
count = s.Count()
});
感谢@K_foxer,它太简单了,虽然我发现了一个长期.....感谢名单后的溶液 – mubsher