【问题标题】:Convert function to LINQ to SQL将函数转换为 LINQ to SQL
【发布时间】:2011-12-27 14:35:54
【问题描述】:

我有这样的 SQL,它从统计表中选择、分组和排序 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)

【问题讨论】:

    标签: c# .net sql-server linq linq-to-sql


    【解决方案1】:

    首先您必须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)
                  };
    

    【讨论】:

    • +1 但是使用 LINQ to SQL 您确实需要先设置函数。你不是免费的。
    • 如何给'select dbo.getDomain(g.url)'取别名?我想给出列名。在 SQL 中我写 'Field as url',如何在 Linq 中做到这一点?
    • @Tomas 您可以将所选字段别名为新的匿名类型,请参阅我的编辑。
    • 您的代码有问题,我收到错误,即未定义 select 子句中的 'g.url'。
    • @Tomas 注意它区分大小写,所以我是g.URL,请检查.DBML 文件中的表定义。
    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 2017-10-06
    • 2020-08-28
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多