2016-06-15 9 views
2

タイトルには、テーブルにdatetime列があります。エンティティのフレームワーク、日/週/日単位でのグループ化

は、私は、3つの異なる例では、3通りの方法で私の記録によってグループに必要があります。

  1. グループ

  • グループによる週別にグループ
  • 日によってどのように私ができます可能であれば、これらの3つの異なるグループステートメントをEntity Frameworkで実行します。

    UPDATE:リンクされた質問は重複していますが、実際の重複はありません。私は、ラムダソリューションを求めている、それはあなたがこの方法を使用することができ、リンクに

  • +1

    のためのあなたは何を試してみましたか? –

    +1

    可能な複製http://stackoverflow.com/questions/762899/linq-group-by-month-and-year-within-a-datetime-field – Sherlock

    答えて

    1

    存在しません:月のこの

    List<MyEntitiy> list = (from e in Context.MyEntities group e by e.Date.Day into g select g).ToList(); 
    

    var ByDayGrouped = new TestEntities().Objects.GroupBy(O => new { O.date.Year, O.date.Month, O.date.Day }).ToList(); 
    
    var ByMonthGrouped = new TestEntities().Objects.GroupBy(O => new { O.date.Year, O.date.Month }).ToList(); 
    
    var ByWeekGrouped = new TestEntities().Objects.GroupBy(O => (O.date.DayOfYear % 7) + M).ToList(); 
    
    +0

    ".Objects"は必要ですか?それは何ですか? –

    +0

    "Objects"は私のDbSetの名前です。あなたのプロジェクトに基づいたものであればどんなものでもかまいません – Kahbazi

    +0

    ByWeekGroupedクエリの 'M'変数は何ですか? –

    0

    使用してでe.Date.Dayを置き換えますe.Date.Month

    の場合は、最初にWeekOfYear

    public int GetWeekOfYear(this DateTime d) 
    { 
        GregorianCalendar c = new GregorianCalendar(); 
        return c.GetWeekOfYear(d,CalenderWeekRule.FirstDay,DayOfWeek.Sunday); 
    } 
    

    を計算し、

    List<MyEntitiy> list = (from e in Context.MyEntities group e by e.Date.GetWeekOfYear() into g select g).ToList(); 
    
    0

    あなたは、LINQを使用して、次の形式を使用することができます使用して、ラムダは、グループ化ウィーク

    一日

    var results = from p in db.table 
              group p.data by p.DateTime.UtcNow.Day into g 
              select new { Id = g.Key, parameters = g }; 
    

    することにより、グループのために

    を表現

    var result = from p in db.table 
             group p.data by p.DateTime.UtcNow.DayOfWeek into g 
              select new { Id = g.Key, parameters = g} 
    

    か、他

    //get the 7days of the week by the below method and perform between operation 
        DateTime fromDate = DateTime.Today.Subtract(new TimeSpan(7, 0, 0, 0)); 
        DateTime today = DateTime.Today; 
        var result = from p in db.table 
             group p.data by (DbFunctions.TruncateTime(today) && DbFunctions.TruncateTime(today) >= DbFunctions.TruncateTime(fromDate)) into g 
             select new { Id = g.Key, parameters = g} 
    

    同様に月

    DateTime fromDate = DateTime.Today.Subtract(new TimeSpan(30, 0, 0, 0)); 
        DateTime today = DateTime.Today; 
        var result = from p in db.table 
             group p.data by (DbFunctions.TruncateTime(today) && DbFunctions.TruncateTime(today) >= DbFunctions.TruncateTime(fromDate)) into g 
             select new { Id = g.Key, parameters = g} 
    
    +0

    なぜ "parameters = g.ToList()"ですか?その用途は何ですか?それは "テーブル"のすべてのフィールドを "パラメータ"に挿入しますか? –

    関連する問題