我有一個查詢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)了暫時只獲得一個客戶?,F在,當我刪除 時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 關注
- 96 瀏覽
添加回答
舉報
0/150
提交
取消