linq グルーピング
linqでグループ化
最初に
現場でGroupByを使用することが増えてきたので復習のためにやってみます!
やり方は先輩エンジニアの方に教えてもらいました。
簡単に説明すると、カラムをグルーピングすることで、テーブルがぐしゃっとなるらしいですw うーん。。。難しい!!
sqlの知識があまりなく、理解が追いつかなかったので、今回はsqlコマンドを使いながら結果を比べながらやっていきたいと思います。
まずはやることから。
使用している体育館の総数を調べます。
テーブルは前回のテーブル結合で使用したPesonとTeamを使っていきます。
Model
Team.cs
public int Sum { get; set; }
groupingした体育館の総数を入れるSumを追加。
Controller
PeopleController.cs
前回内部結合したPTQueryを使用
var PTGroup = PTQuery.GroupBy(pt => new { pt.Team.HeadQuarterName})
.Select(pt => new PTHDto { HeadQuarterName = pt.Key.HeadQuarterName, Sum = pt.Count() });
GroupByでグルーピングしたいカラム名を決める。
SelectでDBから取得したいカラム名を決める。
sql文を確認しながらやるとわかりやすいです。
結果表示
Sql
sql文
SELECT * FROM Person INNER JOIN Team ON Person.TeamName = Team.TeamName;
sql文
SELECT *, COUNT(HeadQuarterName) FROM
Person INNER JOIN Team ON Person.TeamName = Team.TeamName
GROUP BY HeadQuarterName;
なるほど・・・ぐちゃっとなってますねw