簡體   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