2012-06-04 80 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命令行來處理。