如何使用linq c#展平列表

GMa*_*Man 1 .net c# linq entity-framework linq-to-sql

我的情景如下:

我有以下数据 -

ID,名称,类型,位置,GroupID

1, samename, Rock, New York, 12
2, samename, Jazz, Sydney, 12
3, samename, Rock, Sydney, 12
4, samename, Jazz, New York, 12    
5, name3, Opera House, Sydney, 14
6, name3, Opera House, London, 14
7, name2, Emirates, London, 13
Run Code Online (Sandbox Code Playgroud)

我想根据下面的GroupID输出它

ID,名称,地点,位置,GroupID

1, samename, {Rock,Jazz}, {New York,Sydney}, 12
5, name3, Opera House, {Sydney,London}, 14
7, name2, Emirates, London, 13
Run Code Online (Sandbox Code Playgroud)

这是我继承的非常糟糕的设计 - 我试图让它变得更好......而不会破坏旧代码.

我相信答案与SelectMany有关 - 但我无法弄清楚语法 - 我尝试了几种不同的方法.

我试图解决 - 没有压扁..

var q3 = Data.Where(b=>b.GroupID != null).GroupBy(x=> new { x.GroupID }, (key, group) => new 
{ 
  GroupID = key.GroupID,  
  Result =  group.Select(g=> new 
                         {                            
                           Type = g.Type, 
                           Location = g.Location,                                                  
                         }).ToList()
});
Run Code Online (Sandbox Code Playgroud)

Sla*_*nov 5

试试这个:

var answer = data.GroupBy(x => x.GroupID).Select(x => new { 
     ID = x.Min(y => y.ID),
     Name = x.Select(y => y.Name).ToList(),
     Type = x.Select(y => y.Type).ToList(),
     Location = x.Select(y => y.Location).ToList(),
     GroupID = x.Key
}).ToList();
Run Code Online (Sandbox Code Playgroud)