プログラミングBlog

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文を確認しながらやるとわかりやすいです。

結果表示

f:id:Tokuty:20200208142912p:plain

Sql

sql

SELECT * FROM Person INNER JOIN Team ON Person.TeamName = Team.TeamName;

f:id:Tokuty:20200208145400p:plain

内部結合

sql

SELECT *, COUNT(HeadQuarterName) FROM

Person INNER JOIN Team ON Person.TeamName = Team.TeamName

GROUP BY HeadQuarterName;

f:id:Tokuty:20200208145415p:plain

内部結合→グループ化

なるほど・・・ぐちゃっとなってますねw