【问题标题】:Linq - multiple rows as stringLinq - 多行作为字符串
【发布时间】:2012-09-24 10:38:49
【问题描述】:

假设我有一个包含用户名的表和另一个包含名字的表。一个用户可以有多个名字:

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

我。 e.

Users
id | Username
1 | Test

Names
UserId | FirstName
1 | Mike
1 | John

我想收到一份记录,其中包含

测试,“迈克,约翰”

我该怎么做?

编辑:如果用户表有更多我想要获取的列怎么办?

我。 e.

id | Username | Status
1  | Test     | Active

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

【问题讨论】:

    标签: asp.net-mvc-3 linq


    【解决方案1】:

    您可以使用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);
    

    【讨论】:

    • @szaman:更正了小错误:现在按 UserID 分组并更改:UNameGrp.First(x => x.u.Status) 为 => UNameGrp.First().u.Status
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多