Запрос Linq по трем уровням таблиц для генерации суммы - PullRequest
3 голосов
/ 28 ноября 2009

У меня есть ряд таблиц, которые связаны отношениями Первичный ключ / Внешний ключ. У меня есть таблица Транзакций, и каждая Транзакция ссылается на один и только один Продукт. Каждый продукт может существовать в одной и только одной категории:


Categories        Products           Transactions
-------------     -------------      -----------------
CategoryId        ProductId          TransactionId
CategoryName      CategoryId         ProductId
                  ProductName       TransactionAmount
  

Я только изучаю LinqToSql, и я использовал лямбда-выражения для доступа к Продуктам в каждой категории (x => x.Products). Но я пытаюсь получить доступ к таблице транзакций, в частности, чтобы получить сумму всех транзакций по категориям.

Я уверен, что мог бы сделать это, создавая ручные объединения в своем выражении Linq. Но, похоже, мне не нужно этого делать, поскольку все мои таблицы объединены в модель как PF / FK.

Может кто-нибудь предложить пример того, как начать?

1 Ответ

2 голосов
/ 28 ноября 2009

Не пытаясь скомпилировать его, я думаю, что это будет работать так, как вы хотите. Предполагается, что в контексте данных LINQ to SQL установлены ассоциации.

var transPerCategory = db.Categories
                         .Select( c => new {
                             Name = c.CategoryName,
                             Amount = c.Products
                                       .Sum( p => p.Transactions
                                                   .Sum( t => t.TransactionAmount )
                                           )
                          });
...