2010-01-02 150 views
4

我有一張博客條目表,一張標籤表以及一個將標籤與博客條目相交的表格。在LINQ to SQL中是否存在「for xml path」等效項?

我想將博客條目的標籤彙總成逗號分隔的字符串,以便在同一個結果集中返回。這是我如何做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 

我使用XML路徑卷我的標籤了,我正在尋找的方式相當於使用LINQ來做到這一點。

+0

你可以看到這篇文章。它節省了我的時間 http://stackoverflow.com/questions/30044945/what-is-the-equivalent-of-xml-path-and-stuff-in-linq-lambda-expression-group-co – 2015-09-09 04:15:15

回答

4

這是LINQ to SQL確實不是閃耀的情況之一。

這段代碼應該留在數據庫中 - 它會更容易維護,並且最有可能在那裏執行得更好。是否有一個特別的原因需要將這個工作代碼從數據庫中移出並存入應用程序代碼中?如果這取決於我,我會把這個代碼放在原來的位置。

+0

我繼承一個SQL2000博客數據庫,並試圖模仿我自己的sql2005服務器上的一些查詢。 SQL2000不支持「for xml path」,所以我認爲我可以使用LINQ to SQL填補這個空白。 – 2010-01-02 14:20:31