0

次のように私は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(); 

私も月名の代わりに、月の値が欲しいです。もっと簡単な言葉で

、私は現在の年の各月の学生の数をカウントしたい...

答えて

1

あなたは基本的にそこにいます。あなたはこれだけ二つのステップは、あなたが欲しいものを得るために残っている、グループのリストを持っている:

は、月の名前にINT(月コード)を変換します

var mo = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Key); 

各グループについて、項目の数を数えます

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 COMPLで一緒にすべてを入れて、各グループの

g.Count() 

私は長期.....ありがとう後に解決策を見つけたが、そのあまりにも簡単だった、

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() 
      }); 
+0

感謝@K_foxer:AINS、あなたは常にアップし、その後、新しい匿名のオブジェクトを選択)(ToListメソッドを移動することができます – mubsher

関連する問題