Linq 实体框架| GroupBy和Sum
我有一个简单的表,它只有3列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
{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
。