如何将SQL查询转换为仅在日期时间的日期部分使用GROUP BY的Linq?
请帮助我将此SQL查询转换为Linq如何将SQL查询转换为仅在日期时间的日期部分使用GROUP BY的Linq?,sql,sql-server,linq,Sql,Sql Server,Linq,请帮助我将此SQL查询转换为Linq SELECT convert(varchar, data_acquisto, 101) as data , SUM(quantita) FROM Acquisto WHERE data_acquisto >= DATEADD(month,-1,GETDATE()) GROUP BY convert(varchar, data_acquisto, 101) 这就是我尝试过的: var a = from acq in ctx.Acquisto
SELECT convert(varchar, data_acquisto, 101) as data , SUM(quantita)
FROM Acquisto
WHERE data_acquisto >= DATEADD(month,-1,GETDATE())
GROUP BY convert(varchar, data_acquisto, 101)
这就是我尝试过的:
var a = from acq in ctx.Acquisto
where acq.data_acquisto >= data
group acq.data_acquisto.ToString("dd/MM/yyyy")
by new { acq.data_acquisto, acq.quantita } into x
select new ListaGrafico()
{
data = x.Key.data_acquisto.ToString("dd/MM/yyyy"),
qta = Convert.ToInt32(x.Key.quantita)
};
这是我得到的错误:
LINQ to Entities无法识别方法“System.String ToString(System.String)”
分组看起来不正确-Sql仅按
DateTime
列的日期部分进行分组。Linqi分组
将包含按每个分组键分组的所有值,因此不需要匿名分组类
Convert()
恐怕我使用了Lambda语法:
var result = ctx.Acquisto
.Where(acq => acq.data_acquisto >= DateTime.Now.AddMonths(-1))
.ToList()
.GroupBy(acq => acq.data_acquisto.Date)
.Select(x => new ListaGrafico
{
data = x.Key.Date.ToString("dd/MM/yyyy"),
qta = x.Sum(acq => acq.quantita)
});
另外,如果可能的话,我建议在DateTime
结构中保留Date
而不是string
——这意味着将ListaGrafico
的data
属性从string
更改为DateTime
,然后可以省略.ToString(“dd/MM/yyyyy”)
在最后的中选择投影。var a=from acq in ctx.Acquisto其中acq.data\u Acquisto>=DateTime.Now.AddMonths(-1)通过新的{acq.data\u Acquisto.ToString(“dd/MM/yyyy”)将acq分组,acq.quantita}放入x选择新的列表agrafico{data=x.Key,qta=x.Key..quantita}进入x