記事詳細
- 投稿日
- 2025年10月25日22時08分
-
タイトル
-
関連するテーブルからデータを取得(グループ化)
- 内容
-
このコードは、ASP.NET Core MVCでデータベースから情報を取得し、特定の形式に加工するためのLINQクエリです。それぞれの部分を分解して説明します。
コードの意味
_context.Payment:- データベースの
Paymentテーブルを参照しています。 _contextは通常、Entity Framework CoreのDbContextクラスのインスタンスで、データベース操作を行うためのエントリーポイントです。
- データベースの
.Include(p => p.PayCategory):Paymentテーブルと関連するPayCategoryテーブルをEager Loadingで読み込んでいます。- これにより、
PaymentエンティティのPayCategoryプロパティが同時に取得されます。
.GroupBy(x => x.PayCategory.CategoryName):PayCategory.CategoryName(支払いカテゴリの名前)を基準にPaymentデータをグループ化しています。- 例えば、"Food", "Transport", "Utilities"といったカテゴリごとにデータをまとめます。
.Select(g => new { ... }):- グループ化されたデータ(
g)を新しい匿名型オブジェクトに変換しています。 - ここで、以下の2つのプロパティを作成しています:
labels = g.Key:- グループのキー(
CategoryName)をlabelsとして設定します。 - これはカテゴリ名のリスト(重複なし)になります。
- グループのキー(
data = g.Sum(x => x.Amount):- グループ内の
Amount(支払い金額)の合計を計算し、dataとして設定します。
- グループ内の
- グループ化されたデータ(
結果:
- このクエリの結果は、カテゴリごとの支払い金額の合計を持つ匿名型オブジェクトのリストになります。
- 例:
用途
このコードは、カテゴリごとの支払い金額を集計して、例えばグラフやチャート(円グラフや棒グラフなど)に表示するためのデータを生成する際に役立ちます。
labelsがカテゴリ名、dataがそのカテゴリの合計金額として使われます。 -
添付画像
-
画像はありません
- Genreのカテゴリ-名
- Controllers