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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.

我应该怎么做呢。

答案

或者:

  • 从服务器“按原样”获取列并在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
另一答案

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

以上是关于Linq to SQL用分隔符追加多个记录的主要内容,如果未能解决你的问题,请参考以下文章

具有多个包含的Linq-to-Sql

如何避免从 LINQ to Entities 中的多个线程从 SQL 数据库中读取相同的记录

LINQ to XML - 从文件加载 XML 片段

Linq-to-sql 不产生多个外连接?

Linq-to-sql 使用 GroupBy 并返回满足条件的记录

Linq-to-SQL 数据检索速度比较