2011-12-27 56 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