Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Linq 实体框架| GroupBy和Sum_Linq_Entity Framework 6 - Fatal编程技术网

Linq 实体框架| GroupBy和Sum

Linq 实体框架| GroupBy和Sum,linq,entity-framework-6,Linq,Entity Framework 6,我有一个简单的表,它只有3列{id,DateTime,NumberOfCoils},我需要得到查询的结果,这些结果按日期时间和特定日期的NumberOfCoils组合在一起 return testData.MOCK_DATA.Select(x => new { x.NumberOfCoils, x.DateTime }) .AsEnumerable() .Where(x => x.DateTime> DateTime.Now.Ad

我有一个简单的表,它只有3列
{id,DateTime,NumberOfCoils}
,我需要得到查询的结果,这些结果按
日期时间
和特定日期的
NumberOfCoils
组合在一起

return testData.MOCK_DATA.Select(x => new { x.NumberOfCoils, x.DateTime })
            .AsEnumerable()
            .Where(x => x.DateTime> DateTime.Now.AddDays(-numberOfDays))
            .Select(x => new { formattedDate = x.DateTime.ToString("yyyy-MM-dd"), x.NumberOfCoils })
            .OrderBy(x => x.formattedDate)
            .ToList();
我在这里寻找解决方案,但我不知道如何解决它。我认为,让我很难找到解决方案的部分原因是,我还必须做一些格式化工作

我对使用EF非常陌生,所以如果这是一个糟糕的问题,我很抱歉。

试试这个:

return testData.MOCK_DATA.Select(x => new { x.NumberOfCoils, x.DateTime })
            .AsEnumerable()
            .Where(x => x.DateTime> DateTime.Now.AddDays(-numberOfDays))
            .GroupBy(x => x.DateTime)
            .Sum(x => x.NumberOfCoils);

您需要实际使用
GroupBy

return testData.MOCK_DATA.Where(x => x.DateTime > DateTime.Now.AddDays(-numberOfDays))
                         .GroupBy(d => d.DateTime)
                         .Select(dg => new { formattedDate = dg.Key.ToString("yyyy-MM-dd"), NumberOfCoils = dg.Sum(d => d.NumberOfCoils) })
                         .OrderBy(x => x.formattedDate)
                         .ToList();

感谢您的回复,.Sum(x=>x.NumberOfCoils)找不到NumberOfCoils的定义或扩展方法。您应该在
AsEnumerable
之前执行where操作,将其发送到数据库引擎,除非您出于某种原因想在筛选之前将整个表拉入内存。事实上,如果在大多数情况下你不能没有它,你应该只做
AsEnumerable