C#Lambda - 获取不同的Id并附加其他字段值

时间:2015-04-28 07:30:09

标签: c# linq lambda

我有一个ID和标题列表,如下所示:

    List<Event> events= new List<Event>();

    events.Add(new Event(){ Id= "1001", Title= "abc" });
    events.Add(new Event(){ Id= "1002", Title= "xyz" });
    events.Add(new Event(){ Id= "1001", Title= "hij" });
    events.Add(new Event(){ Id= "1002", Title= "opq" });
    events.Add(new Event(){ Id= "1003", Title= "efg" });

在这里,我希望使用C# lambda expression

为这些ID提供明显的 ID 逗号分隔的标题

预期结果:

[
    {Id: 1001,Title : "abc,hij"},
    {Id: 1002,Title : "xyz,opq"},
    {Id: 1003,Title : "efg"},
]

您能告诉我如何使用C# Lambda expression实现此目的。提前致谢

1 个答案:

答案 0 :(得分:6)

您可以使用GroupBy + String.Join

var query = events.GroupBy(x => x.Id)
    .Select(g => new Event 
     { 
         Id = g.Key, 
         Title = String.Join(",", g.Select(x => x.Title)) 
     });

如果您想要新的列表附加.ToList()