我有一个查询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())
};
检查此演示中的示例代码
- 2 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消