2016-11-28 6 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

これを実現するには、GroupByメソッドを使用する必要があります。

var grouped = staff.GroupBy(x=>x.Name, x=>x.Team); 

このステートメントは、名前でデータをグループ化し、グループ化されたグループごとにチームを維持します。

詳細はこちらhttps://msdn.microsoft.com/en-us/library/bb545971.aspx?f=255&MSPPError=-2147217396をご覧ください。

希望します。

+0

確かに更新された回答 – tym32167

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に追加しました。

関連する問題