在Linqtosql中,如何顯示單個字段中多行的項目。Linqtosql - 加入的行
例如我有一個3表設置標記(實體,標記,entitytag)全部通過外鍵鏈接。
對於每個實體,我想在一個字段中返回名稱,然後在第二個字段中返回所有相關標籤。
例如Item1,tag1; TAG2; tag3 Item2,tag4,tag5 ....
VB語句首選。
感謝 傑夫
在Linqtosql中,如何顯示單個字段中多行的項目。Linqtosql - 加入的行
例如我有一個3表設置標記(實體,標記,entitytag)全部通過外鍵鏈接。
對於每個實體,我想在一個字段中返回名稱,然後在第二個字段中返回所有相關標籤。
例如Item1,tag1; TAG2; tag3 Item2,tag4,tag5 ....
VB語句首選。
感謝 傑夫
好了,不知道這是最有效的方式,但它的工作原理。
Dim dc As New DataContext
Dim query = From i In dc.Items _
Let tags = (From t In dc.ItemTags _
Where t.ItemID = i.ID _
Select t.Tag.Name).ToArray _
Select i.ItemName, Tags = String.Join(" | ", tags)
有了這個答案我假設你有類似如下的表格設置,名稱是不是很大,只是爲了說明:
AnEntity:ID,姓名
ATAG:ID,標籤名
EntityTag:ENTITYID(FK到AnEntity.Id),標籤識別(FK到ATag.Id)
你可以試試這個:
var entityTags = from ent in theEntities
from enttags in ent.EntityTags
group enttags by enttags.AnEntity into entityGroup
select new { TheEntity = entityGroup.Key, TheTags =
from t in entityGroup
select t.ATag.TagName };
我還沒有能夠真正測試這個,今天下午我會給它一個鏡頭,並在需要時進行編輯。這裏發生的是一個SelectMany。 '來自dc.AnEntities'獲取所有實體記錄,然後下一個'來自ent.EntityTags的enttags'獲取每個實體的所有實體標籤記錄。該團隊通過做非常多的事情,通過AnEntity對EntityTag記錄進行分組。把它們放在一個匿名類型中,你很好走。
編輯:
好的,改變了上面的代碼,它現在的作品。在獲得EntityTag對象列表之前,現在您可以獲得該實體的Entiy對象和字符串列表(標籤)。
對於你想要做的事,這是我能想到的最好的方式。 – 2008-11-24 17:29:36