Linq查询三个级别的表以生成总和

时间:2009-11-28 18:23:10

标签: linq-to-sql join group-by

我有一系列与主键/外键关系连接的表。我有一个交易表,每个交易引用一个且只有一个产品。每个产品可以只存在一个类别:


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

我刚刚学习LinqToSql,并且我使用lambda表达式来访问每个类别中的Products(x => x.Products)。但我要做的是访问Transactions表,特别是按类别获取所有交易的总和。

我确信我可以通过在Linq语句中创建手动连接来实现此目的。但似乎我不应该这样做,因为我的所有表都在模型中作为PF / FK加入。

有人可以举例说明如何开始吗?

1 个答案:

答案 0 :(得分:2)

不试图编译它,我认为这将按照你想要的方式工作。它假定您在LINQ to SQL数据上下文中设置了关联。

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