C#LINQ选择具有相同值的一个属性的对象连接其他值

cAM*_*MPy 6 c# linq collections

我有一个像这样的产品清单:

Prod1: Id=1, Name="name1", Color="Blue"
Prod2: Id=1, Name="name1", Color="Green"
Prod3: Id=2, Name="Test2, Color="Red"
Run Code Online (Sandbox Code Playgroud)

我想要执行的是获得这样的简化列表:

Prod1: Id=1, Name="name1", Color="Blue, Green"
Prod3: Id=2, Name="Test2, Color="Red"
Run Code Online (Sandbox Code Playgroud)

我总是想用相同的id来获取产品并添加它们的颜色.我觉得有一个聪明的代码行方式来做到这一点,但我不知何故陷入困境:

productList.GroupBy(p => new { p.Id }).Select(x => x.First()).ToList();
Run Code Online (Sandbox Code Playgroud)

这不能给我添加第二种颜色的能力.是否会给予任何帮助

Har*_*sad 13

试试这个.

productList.GroupBy(p => new { p.Id, p.Name })
           .Select(x =>new {
                      Id =x.Key.Id, 
                      Name = x.Key.Name,
                      Color = String.Join(",", x.Select(c=> c.Color)) 
               }); 
Run Code Online (Sandbox Code Playgroud)

工作 Demo