按实体框架分组

时间:2016-03-31 09:10:51

标签: c# linq linq-to-entities entity-framework-6

我有一个名为" Orders"和" OrderItems"他们有以下专栏

订单

的OrderId, 订购日期, 订单类型,

的OrderItems

项目Id, 的OrderId, 价格,

我需要返回OrderId,OrderDate,OrderType和价格总和。但是,我似乎找不到如何在linq中实现这一点的一个很好的例子。

有人可以帮忙吗?

修改

为了清楚起见,我需要为每个订单显示一行,价格是该订单所有订单商品的总和。

2 个答案:

答案 0 :(得分:1)

假设有3个订单ID:1,2,3 如下所述,有3个订单项目:

  • ID = 1,OrderID = 1,价格= 12
  • ID = 2,OrderID = 1,Price = 13
  • ID = 3,OrderID = 3,价格= 14

    var carts = (from Cart o in Context.Orders
               join oi in Context.OrderItems on o.Id equals oi.OrderId into orderItems
               select new 
               {
                   o.Id,
                   o.OrderDate,
                   o.OrderType,
                   sum = orderItems.Sum(p=> p.Price)
               }).ToList();
    

上面提到的linq将选择总和,如下所述

  • 订单ID:1,总和:25
  • OrderID:2,Sum:0
  • 订单ID:3,总和:14

答案 1 :(得分:0)

context.Orders.Include(order => order.OrderItems).Select(order => new {
    OrderId = order.OrderId,
    OrderDate = order.OrderDate,
    Ordertype = order.OrderType,
    TotalPrice = i.OrderItems.Sum(orderItem => orderItem.Price)
});

也许你可以尝试这样的事情。