Запрос Linq по трем уровням таблиц для генерации суммы
-
06-07-2019 - |
Вопрос
У меня есть ряд таблиц, которые связаны отношениями Первичный ключ / Внешний ключ. У меня есть таблица Транзакций, и каждая Транзакция ссылается на один и только один Продукт. Каждый продукт может существовать в одной и только одной категории:
Categories Products Transactions
------------- ------------- -----------------
CategoryId ProductId TransactionId
CategoryName CategoryId ProductId
ProductName TransactionAmount
Я только изучаю LinqToSql, и я использовал лямбда-выражения для доступа к Продуктам в каждой категории (x = > x.Products). Но я пытаюсь получить доступ к таблице транзакций, в частности, чтобы получить сумму всех транзакций по категориям.
Я уверен, что мог бы сделать это, создавая ручные объединения в своем выражении 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 )
)
});