2011-12-27 55 views
3

我有這樣的SQL從統計表中選擇,分組和排序Url字段。 getDomain是存儲函數。我試圖重寫這個SQL到Linq沒有任何運氣。請有人解釋如何做到這一點?將函數轉換爲LINQ到SQL

SELECT dbo.getDomain(Url) as url 
FROM Statistic 
GROUP BY dbo.getDomain(Url) 
HAVING COUNT(Url) > 1 
ORDER BY COUNT(Url) 

回答

3

首先你必須define your UDF in the .DBML file包含其他表和程序的定義。然後你可以在你的LINQ查詢中使用Call any UDF function inline像這樣:

var results = from s in dbo.Statistic 
       groub s by dbo.getDomain(s.url) into g 
       where g.Count() > 1 
       orderby g.Count() ascending 
       select new 
       { 
        URL = dbo.getDomain(g.Key) 
       }; 
+0

+1但是對於LINQ to SQL,你需要先設置函數。你不會免費得到它。 – Yuck 2011-12-27 14:52:56

+1

'count()'?也許'Count()'? – abatishchev 2011-12-27 14:52:56

+0

如何別名'select dbo.getDomain(g.url)'?我想給列名稱。在SQL中,我寫'Field as url',如何在Linq中做到這一點? – Tomas 2011-12-27 15:06:06