Запрос Linq по трем уровням таблиц для генерации суммы

StackOverflow https://stackoverflow.com/questions/1813285

  •  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 )
                                           )
                          });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top