2009-06-01 7 views
4

Désolé pour le mauvais titre des excuses question si elle est un doublon.LINQ to SQL à ajouter plusieurs enregistrements avec un séparateur

j'ai deux tables db:

Users     Documents 
-------    --------- 
ID     ID 
Name     DocumentName 
         UserID 

Dire que j'ai 1 enregistrement dans Users

1, "bob" 

et trois documents connexes dans Documents

1, "Doc1", 1 
2, "Doc2", 1 
3, "Doc3", 1 

Je veux générer un résultat set:

1, "bob", "Doc1, Doc2, Doc3" 

J'ai essayé différentes choses de la fusion impliquant plusieurs jeux de résultats, mais obtenir l'erreur: Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator.

Comment dois-je m'y faire.

Répondre

5

Soit:

  • prendre la colonne "comme est" à partir du serveur et faire le concat en C#
  • écrire un SP qui le fait, et appelez la SP via LINQ

le SP (accepter @UserID) peut le faire comme ceci:

DECLARE @txt varchar(max) 
SET @txt = '' 
SELECT @txt = @txt + [DocumentName] + ', ' 
FROM [Documents] 
WHERE [UserID] = @UserID 

SELECT [ID], [Name], @txt AS [Docs] 
FROM [Users] 
WHERE [ID] = @UserID