Запрос Linq по трем уровням таблиц для генерации суммы
У меня есть ряд таблиц, которые связаны отношениями первичный ключ / внешний ключ. У меня есть таблица Транзакций, и каждая Транзакция ссылается на один и только один Продукт. Каждый продукт может существовать в одной и только одной категории:
Categories Products Transactions
------------- ------------- -----------------
CategoryId ProductId TransactionId
CategoryName CategoryId ProductId
ProductName TransactionAmount
Я только изучаю LinqToSql, и я использовал лямбда-выражения для доступа к Продуктам в каждой категории (x => x.Products). Но я пытаюсь получить доступ к таблице транзакций, в частности, чтобы получить сумму всех транзакций по категориям.
Я уверен, что мог бы сделать это, создавая ручные объединения в своем заявлении Linq. Но, похоже, мне не нужно этого делать, поскольку все мои таблицы объединены в модель как PF/FK.
Кто-нибудь может предложить пример того, как начать?
1 ответ
Не пытаясь скомпилировать его, я думаю, что это сработает так, как вы хотите. Предполагается, что у вас есть связи, установленные в контексте данных LINQ to SQL.
var transPerCategory = db.Categories
.Select( c => new {
Name = c.CategoryName,
Amount = c.Products
.Sum( p => p.Transactions
.Sum( t => t.TransactionAmount )
)
});