Linq Abfrage über drei Ebenen der Tabellen Summe zu erzeugen,
-
06-07-2019 - |
Frage
Ich habe eine Reihe von Tabellen, die mit Primärschlüssel / Fremdschlüsselbeziehungen verbunden sind. Ich habe eine Tabelle von Transaktionen und jede Transaktion verweist ein und nur ein Produkt. Jedes Produkt kann in einem existiert und nur eine Kategorie:
Categories Products Transactions
------------- ------------- -----------------
CategoryId ProductId TransactionId
CategoryName CategoryId ProductId
ProductName TransactionAmount
Ich lerne gerade LinqToSql, und ich habe Lambda-Ausdrücke verwendet, um die Produkte zuzugreifen in jeder Kategorie (x => x.Products). Aber was ich versuche zu tun, um die Transaktionen Tabelle zugreifen, nämlich eine Summe aller Transaktionen nach Kategorie zu erhalten.
Ich bin sicher, dass ich dieses Handbuch, indem tun könnte, schließt sich in meiner Linq-Anweisung. Aber es scheint nicht, wie ich sollte, dies zu tun haben, da alle meine Tabellen als PF / FK in dem Modell verbunden sind.
Kann mir jemand ein Beispiel geben, wie loszulegen?
Lösung
Ohne versuchen, es zu kompilieren, ich denke, das wird die Art und Weise arbeiten Sie wollen. Er geht davon aus, dass Sie die Verbände haben in den LINQ to SQL-Daten Kontext einzurichten.
var transPerCategory = db.Categories
.Select( c => new {
Name = c.CategoryName,
Amount = c.Products
.Sum( p => p.Transactions
.Sum( t => t.TransactionAmount )
)
});