代码之家  ›  专栏  ›  技术社区  ›  ChrisW

跨三级表的LINQ查询以生成SUM

  •  3
  • ChrisW  · 技术社区  · 15 年前

    我有一系列与主键/外键关系联接的表。我有一个事务表,每个事务引用一个而且只有一个产品。每个产品只能存在于一个类别中:

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

    我只是在学习LinqToSQL,并使用lambda表达式访问每个类别中的产品(x=>x.products)。但我要做的是访问事务表,特别是按类别获取所有事务的总和。

    我确信我可以通过在LINQ语句中创建手动联接来实现这一点。但似乎我不需要这样做,因为我的所有表在模型中都是作为pf/fk连接的。

    有人能举一个如何开始的例子吗?

    1 回复  |  直到 11 年前
        1
  •  2
  •   tvanfosson    15 年前

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

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