0

到目前为止,我只使用 lambda 等编写简单的查询(c => c.UserID == uID),但现在我有一个更高级的SQL query. 我希望针对我使用创建的模型运行Entity Framework

问题是我无法弄清楚如何在多列上使用 group by 并在列distinct count上执行操作ObjectGUID。这是我在 SQL Server 管理工作室中运行它时运行良好的 SQL 查询。

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 表达式完成?任何帮助,将不胜感激

4

1 回答 1

2

您需要为分组创建新的匿名类型;

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条件应该很容易。

于 2013-05-06T11:42:06.493 回答