2012-06-04 83 views
0

我有这样的: 我有三个数据顺序排序和地址列表。Linq加入,组和总和

我想加入这些列表。

Contents = from o in Orders 
      join a in addresses on o.DeliveryAddressId equals a.AddressId 
      //join ol in ordersLines on o.OrderId equals ol.OrderId 
      let ol = ShopOrderLines.Where(x=>x.OrderId == o.OrderId) 
      select new Order 
      { 
      OrderId = o.OrderId, 
      CreatedDate = o.CreatedDate, 
      Status = o.Status, 
      CustomerComment = o.CustomerComment, 
      AdminComment = o.AdminComment, 
      PaymentType = (PaymentType) o.PaymentStatus, 
      PaymentStatus = (PaymentStatus) o.PaymentType, 
      Firstname = a.Firstname, 
      Lastname = a.Lastname, 
      Sum = ol.Any() ? ol.Sum(x=>x.Quantity * x.Price) : 0 
      }; 

这工作正常,但我也想添加每个订单orderline的总和。

就是这样。总和=(ol.Vat * ol.Quantity)+(ol.Quantity + ol.Price)

我想我必须将结果分组计算?

有人吗?

+0

这看起来不正确。您正在为每个订单行*和每个地址创建一个新的'Order'实例。因此,如果一个订单有两个地址和两个订单行,则您将创建四个订单对象。你确定你不想加入团队吗? –

+1

作为一个说明,它看起来像你分配两个属性错误的PaymentType =(PaymentType)o.PaymentStatus,和PaymentStatus =(PaymentStatus)o.PaymentType,'它看起来像一个错字,属性互换它们 – Jupaol

+0

以及为什么你的Order类中没有'Address DeliveryAddress'属性(以及IList OrderLines或类似的东西)? –

回答

0

我改变了我的代码,并添加了让ol = ShopOrderLines.Where(x => x.OrderId == o.OrderId)这给了我一个List om命令行来处理。