繁体   English   中英

如何使用Linq / Lambda编写此SQL查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM