LINQ to SQL中是否有类似于"for xml path"的等效项?

4

我有一个博客条目的表格,一个标签的表格,以及一个将标签与博客条目相交的表格。

我想把博客条目的标签滚动到一个逗号分隔的字符串中,以便在同一结果集中返回。这是我在SQL中的做法:

select 
    be.Title
    ,Tags = lower((
        select
            stuff((
                select distinct 
                    ',' + bc.Category
                from    
                    BlogEntryCategory bec
                    join BlogCategory bc on bc.BlogCategory_ID = bec.BlogCategory_ID
                where    
                    bec.BlogEntry_ID = be.BlogEntry_ID
                for xml path('')),1,1,'')        
        )
    )
from 
    BlogEntry be

我正在使用 for xml path 将我的标签滚动起来,并且我正在寻找用 LINQ 实现相同功能的方法。


你可以看到这篇帖子。它节省了我的时间。https://dev59.com/rIrda4cB1Zd3GeqPM3vO - fxdoanhuy
1个回答

4

这是那种LINQ to SQL并不擅长的情况。

这段代码应该留在数据库中 - 这样更容易维护,而且很可能在那里执行得更好。您想将这个可以工作的代码从数据库移出并放入应用程序代码中有特殊原因吗?如果由我来决定,我会让这段代码保持原样。


我继承了一个 SQL2000 博客数据库,并尝试模仿我自己的 sql2005 服务器上的一些查询。"for xml path" 在 SQL2000 上不受支持,因此我想使用 LINQ to SQL 来填补这个空白。 - Billy Coover

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