【问题标题】:How to use groupby clause in Entity Framework and ASP.NET MVC 4?如何在实体框架和 ASP.NET MVC 4 中使用 groupby 子句?
【发布时间】:2018-03-20 17:49:43
【问题描述】:

我有一个admission 模型类如下:

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();

我还想要月份名称而不是月份值。

更简单的说,就是想统计当年每个月的学生人数……

【问题讨论】:

    标签: asp.net entity-framework linq linq-to-entities asp.net-mvc-5


    【解决方案1】:

    你基本上就在那里。您有一个分组列表,因此只需两个步骤即可获得您想要的:

    将int(月份代码)转换为月份名称:

    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 抱怨,您可以随时将 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,虽然我在长期之后找到了解决方案,但它太简单了.....thanx
    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2011-02-20
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多