为了账号安全,请及时绑定邮箱和手机立即绑定

用逗号分隔变量内的多个列值连接

用逗号分隔变量内的多个列值连接

C#
撒科打诨 2022-10-23 15:04:06
我有一个查询linq-to-sql如下:var query = (from users in _context.Users             join consumers in _context.Consumers             on users.usersId equals consumers.consumerId             from clients in _context.Clients.Where(x => x.Id == users.Id).DefaultIfEmpty().Take(1)            where consumerId.Contains(consumers.consumerId)            select new UserConsumerDto             {             FirstName = users.FirstName,              LastName = users.LastName,              ClientName = clients.Name            }).ToList()上面的查询返回了几行;这意味着一个用户可以有多个客户端。因此,我添加Take(1)了暂时只获得一个客户。现在,当我删除 时Take(1),会返回几条记录。我想通过用逗号分隔的用户在单个记录中添加客户端名称来避免这种情况。例如:User 1 | ClientA, ClientB 代替:User 1 | Client AUser 1 | Client B有人可以帮我实现这一目标吗?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

例如,您可以使用group by对记录进行分组UserName,然后聚合客户端名称,string.Join(",",ClientName)用于连接客户端名称。

这是一个示例代码:


    var userClients = from c in (dbContext joined tables)

      group c by c.UserName into u 

      select new {

          UserName = u.First().UserName,

          ClientName = string.Join(",", (from n in u select n.ClientName).ToArray()) 

      };

检查此演示中的示例代码


查看完整回答
反对 回复 2022-10-23
?
潇湘沐

TA贡献1816条经验 获得超6个赞

你可以试试这段代码


SELECT DISTINCT ST2.SubjectID, 

    SUBSTRING(

    (

    SELECT ','+ST1.StudentName AS [text()]

    FROM dbo.Students ST1

    WHERE ST1.SubjectID = ST2.SubjectID

    ORDER BY ST1.SubjectID

    FOR XML PATH ('')

    ), 2, 1000) [Students]

    FROM dbo.Students ST2

供参考检查


查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信