[英]How do I write this SQL query using Linq/Lambda?
到目前为止我只使用lambda编写简单查询(c => c.UserID == uID)
等等,但现在我有了更高级的SQL query
。 我想反对我使用Entity Framework
创建的模型。
问题是我无法弄清楚如何在多列上使用group by,并且还对列ObjectGUID
进行了distinct
count
。 这是SQL Query在SQL Server管理工作室中运行时工作正常。
SELECT YEAR(logdate) as year, MONTH(logdate) as month, COUNT(distinct ObjectGUID) as ammount
FROM table
WHERE ExportTemplate = 'template' AND LogDate >= '2008-01-01 00:00:00:000'
GROUP BY YEAR(logdate), MONTH(logdate)
Order By YEAR(logdate), MONTH(logdate)
将它与linq结合起来是否更好?还是可以通过lambda表达式来完成它? 任何帮助,将不胜感激
你需要为灌浆创建新的匿名类型;
from x in Model
group by new { x.Date.Year, x.Date.Month } into g
order by g.Key.Year, g.Key.Month
select new
{
g.Key.Year,
g.Key.Month,
Count = g.Select(s => s.ObjectGUID).Distinct().Count()
}
像这样的东西应该做的伎俩(虽然没有经过测试)。 加入where
的条件应该很容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.