3つのレベルのテーブルに渡るLinqクエリによる合計の生成
-
06-07-2019 - |
質問
主キー/外部キーの関係で結合された一連のテーブルがあります。トランザクションのテーブルがあり、各トランザクションは1つの製品のみを参照します。各製品は1つのカテゴリにのみ存在できます:
Categories Products Transactions
------------- ------------- -----------------
CategoryId ProductId TransactionId
CategoryName CategoryId ProductId
ProductName TransactionAmount
LinqToSqlを学習しているだけで、ラムダ式を使用して各カテゴリの製品にアクセスしました(x => x.Products)。しかし、私がやろうとしているのは、Transactionsテーブルにアクセスして、具体的にはカテゴリごとにすべてのトランザクションの合計を取得することです。
Linqステートメントで手動結合を作成することで、これを実行できると確信しています。しかし、すべてのテーブルがモデル内でPF / FKとして結合されているため、これを行う必要があるとは思えません。
誰でも始め方の例を提供できますか?
解決
コンパイルしようとせずに、これはあなたが望むように機能すると思います。 LINQ to SQLデータコンテキストで関連付けが設定されていることを前提としています。
var transPerCategory = db.Categories
.Select( c => new {
Name = c.CategoryName,
Amount = c.Products
.Sum( p => p.Transactions
.Sum( t => t.TransactionAmount )
)
});
所属していません StackOverflow