Pergunta

Eu tenho uma série de tabelas que são unidas com chave primária / relações de chave estrangeira. Eu tenho uma tabela de transações, e cada um referências de transação e apenas um produto. Cada produto pode existir em uma e apenas uma categoria:


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

Estou aprendendo LinqToSql, e eu usei expressões lambda para acessar os produtos em cada categoria (x => x.Products). Mas o que estou tentando fazer é acessar a tabela de Transações, especificamente para obter a soma de todas as operações por categoria.

Eu estou certo que eu poderia fazer isso através da criação manual de junta na minha declaração Linq. Mas não parece que eu deveria ter que fazer isso, já que todas as minhas tabelas são unidas como PF / FK no modelo.

Alguém pode oferecer um exemplo de como começar?

Foi útil?

Solução

Sem tentar compilá-lo, eu acho que isso vai funcionar da maneira que quiser. Assume-se que você tem as associações criadas no LINQ para o contexto de dados SQL.

var transPerCategory = db.Categories
                         .Select( c => new {
                             Name = c.CategoryName,
                             Amount = c.Products
                                       .Sum( p => p.Transactions
                                                   .Sum( t => t.TransactionAmount )
                                           )
                          });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top