Linq to SQL用分隔符追加多个记录

时间:2009-06-01 10:50:59

标签: c# .net linq-to-sql

对不起,如果问题是重复的,那么问题的标题就是道歉。

我有两个数据库表:

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

说我在Users

中有1条记录
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 个答案:

答案 0 :(得分:5)

或者:

  • 从服务器“按原样”获取列,并在C#
  • 中执行concat
  • 写一个执行此操作的SP,并通过LINQ
  • 调用SP

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

答案 1 :(得分:0)

如果您使用原始sql,则可以使用STUFF和FOR XML PATH语法,如下所述: How Stuff and 'For Xml Path' work in Sql Server 其他解决方案,您需要首先通过linq从sql获取数据,然后生成结果.AsEnumerable()-现在您可以使用string.Join函数