两部分问题
我会尽力解释这个问题。
第1部分
我有一个看起来像这样的表:
最后两行对于类型和UrlId是相同的。
我有一个我调用的SP执行以下查询以获取上面的数据:
SELECT Urlid, DomainName, OrgId, DomainId, s.TypeId AS TypeId
FROM DomainData d
JOIN SystemUrls s ON s.DomainId = d.Id
WHERE @OrgId IS NULL OR OrgId = @OrgId
如何制作数据? :
Name(varchar) OrgId(bigint) DomainId(bigint) TypeId(int)
Three 556548-4499 71 2,1
第2部分
假设我不改变上述结果并决定使用linq-query(C#)在服务器上更改
linq查询如何为我提供所需的结果?
答案 0 :(得分:1)
对于第1部分 - 然后查看this question。有人在我面前回答,所以我不会重复:)
对于第2部分 - 将其拆分为2部分 - 第一部分是选择联合数据,然后将其存入内存(ToList()
)后,可以使用string.Join
连接所有{{1} }}Š
TypeId
答案 1 :(得分:1)
看看这对你有用:
注意:我正在考虑Urlid,DomainName,OrgId,DomainId属于“DomainData”而Id,TypeId属于“SystemUrls”表。
SELECT DomainName, OrgId, Id,
STUFF(( SELECT ', ' + cast(s2.TypeId as varchar(5))
FROM SystemUrls AS s2
WHERE s2.DomainId = d.Id
FOR XML PATH('')
), 1, 2, '') as TypeId
FROM DomainData d
WHERE @OrgId IS NULL OR OrgId = @OrgId
GROUP BY DomainName, OrgId, Id
答案 2 :(得分:-2)
首先创建临时表, 当你想要所有长字符串格式的数据类型和大小都可以生效时,并且具有预期范围的声明,所以请确保这一点。
然后,
insert into #temp(
Urlid, DomainName, OrgId, DomainId, s.TypeId)
SELECT Urlid, DomainName, OrgId, DomainId, s.TypeId
FROM DomainData d
JOIN SystemUrls s ON s.DomainId = d.Id
WHERE @OrgId IS NULL OR OrgId = @OrgId
declare @Column1 varchar(350),
select @Column1= coalesce(@Column1+',','')+convert(varchar(30),TypeId )
from #temp
update #temp
set Typeid=@column1
from #temp
select * from #temp
顺便回答此问题的方式尽量不要创建重复的条目这是链接:click here