Linq - 多行作为字符串

时间:2012-09-24 10:38:49

标签: asp.net-mvc-3 linq

让我们假设我有一个包含Username的Table,另一个包含FirstName。单个用户可以拥有多个FirstNames:

如何获取包含用户名和所有以逗号分隔的名字的记录?

我。即

Users
id | Username
1 | Test

Names
UserId | FirstName
1 | Mike
1 | John

我想收到一条包含

的记录

测试,“迈克,约翰”

我该怎么做?

修改:如果“用户”表格中包含更多我想要的列,该怎么办?

我。即

id | Username | Status
1  | Test     | Active

如何获得Test, Active, "Mike, John"

1 个答案:

答案 0 :(得分:3)

您可以使用GroupByString.Join

var userGroups = from u in users
     join n in names
     on u.ID equals n.UserID
     group new{n, u} by n.UserID into UserGrp
     select new
     {
         Username = UserGrp.Key,
         Status = UserGrp.First().u.Status,
         Names = string.Join(",", UserGrp.Select(x => x.n.Name))
     };

foreach (var ug in userGroups)
   Console.WriteLine("{0}, {1}, \"{2}\"", ug.Username, ug.Status, ug.Names);