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

我有一个查询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 A

User 1 | Client B

有人可以帮我实现这一目标吗?


撒科打诨
浏览 124回答 2
2回答

慕尼黑5688855

例如,您可以使用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())       };检查此演示中的示例代码

潇湘沐

你可以试试这段代码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供参考检查
打开App,查看更多内容
随时随地看视频慕课网APP