2016-11-28 64 views
0

我有一個結果集,我從執行我正在使用的存儲過程中取回。以下是結果集的示例:在C中使用linq對結果集進行分組#

var staff = new Staff[] 
     { 
      new Staff{Code = 5, Name = "Sam", Team = "AB1"}, 
      new Staff{Code = 6, Name = "Dave", Team="RAB"}, 
      new Staff{Code = 6, Name = "Dave", Team="ABC"}, 
     }; 

根據我處理的數據集,工作人員可以在多個團隊中操作。

我想要做的是它們分組,以顯示結果是這樣的:

Value ChildValues 
Dave [RAB, ABC] 
Sam [AB1] 

我怎樣才能做到這一點?我曾嘗試以下通過複製主名單,但我知道下面是不正確的:

var query = staff.GroupJoin(staff, s => s.Code, 
      s => s.Code, (s, result) => new StaffResult(s.Name, result)); 

我很欣賞有關上述援助。

+0

這樣的東西:https://dotnetfiddle.net/mcsZoU –

回答

1

嘗試以下查詢:

var staff = new Staff[] 
     { 
      new Staff{Code = 5, Name = "Sam", Team = "AB1"}, 
      new Staff{Code = 6, Name = "Dave", Team="RAB"}, 
      new Staff{Code = 6, Name = "Dave", Team="ABC"}, 
     }; 

     var grouped = staff.GroupBy(m => m.Name) 
      .Select(p => new { Value = p.Key, ChildVlues = p.Select(m => m.Team) }) 
      .ToList(); 

在這裏,我通過Name分組。比我創建了新的匿名類型,並將組的Key(代表名稱)添加到Value。此外,我還添加了p.Select(m => m.Team)ChildValues,因爲您需要收集姓名。