将函数转换为LINQ to SQL

3

我有一条SQL语句,用于从Statistic表中选择、分组和排序Url字段。其中getDomain是一个存储函数。我尝试重写这个SQL到Linq,但没有成功。请有经验的人解释一下如何做到?

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

3

首先,您需要在包含其他表和过程定义的.DBML文件中定义您的UDF。然后,您可以像这样在LINQ查询中调用任何UDF函数

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)
              };

如何给“select dbo.getDomain(g.url)”设置别名?我想要给列命名。在SQL中,我会写成“Field as url”,那么在Linq中该怎么做呢? - Tomas
@Tomas,你可以将所选字段别名为新的匿名类型,请参见我的编辑。 - Mahmoud Gamal
你的代码有问题,我收到了一个错误,说选择子句中的 'g.url' 未定义。 - Tomas
@Tomas 注意它是区分大小写的,所以也许应该是 g.URL,请检查 .DBML 文件中的表定义。 - Mahmoud Gamal
不,问题不在字段名称上,选择子句中的g变量没有任何字段。智能感知没有给出任何选择。 - Tomas
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接