Linq to SQL для добавления нескольких записей с разделителем - PullRequest
4 голосов
/ 01 июня 2009

Извините за неправильное название вопроса извинения, если это дубликат.

У меня есть две таблицы БД:

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

Скажите, у меня есть 1 запись в Users

1, "bob" 

и три связанные записи в Documents

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

Я хочу сгенерировать набор результатов:

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

Я пробовал разные вещи, включая объединение нескольких наборов результатов, но получил ошибку: Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator.

Как мне поступить?

Ответы [ 2 ]

5 голосов
/ 01 июня 2009

Или:

  • взять столбец "как есть" с сервера и выполнить конкатат в C #
  • написать SP, который делает это, и вызвать SP через LINQ

SP (принимая @UserID) может сделать это так:

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
0 голосов
/ 11 апреля 2019

если вы используете raw sql, вы можете использовать синтаксис STUFF и FOR XML PATH, как описано в: Как работают вещи и «для пути XML» в Sql Server другое решение, вам нужно сначала получить данные из sql по linq, а затем сделать результат .AsEnumerable () - теперь вы можете использовать функцию string.Join

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...