Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架,按日期时间按天/周/月分组_C#_Sql_Sql Server_Entity Framework_Datetime - Fatal编程技术网

C# 实体框架,按日期时间按天/周/月分组

C# 实体框架,按日期时间按天/周/月分组,c#,sql,sql-server,entity-framework,datetime,C#,Sql,Sql Server,Entity Framework,Datetime,正如标题所说,我的表中有一个datetime列 在三种不同的情况下,我需要以三种方式对我的记录进行分组: 按天分组 每周分组 按月分组 如果可能,我如何在实体框架中使用lambda表达式执行这3种不同的group by语句 更新:链接的问题重复,不是真正的重复。我要的是lambda解决方案,但链接中没有它您可以使用此方法: var ByDayGrouped = new TestEntities().Objects.GroupBy(O => new { O.date.Year, O.date

正如标题所说,我的表中有一个datetime列

在三种不同的情况下,我需要以三种方式对我的记录进行分组:

  • 按天分组
  • 每周分组
  • 按月分组
  • 如果可能,我如何在实体框架中使用lambda表达式执行这3种不同的group by语句


    更新:链接的问题重复,不是真正的重复。我要的是lambda解决方案,但链接中没有它

    您可以使用此方法:

    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();
    
    用这个

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

    List<MyEntitiy> list = (from e in Context.MyEntities group e by e.Date.GetWeekOfYear() into g select g).ToList();
    
    List List=(从Context.myenties组e中的e到e.Date.GetWeekOfYear()到g选择g.ToList();
    
    可以使用linq和lambda表达式使用以下格式

    按天分组

        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}
    

    是否需要“.Objects”的可能副本?它是什么?“对象”是我的数据库集的名称。它可以是基于您的项目的任何内容
    ByweekGroup
    查询中的
    M
    变量是什么?这是一个数字,取决于您希望将一周中的哪一天作为一周的第一天?它有什么用?是否在“参数”中插入“表格”的所有字段?
        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}