2012-06-04 3 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 
      }; 

잘 작동하지만 각 주문에 대한 orderLines의 합계도 추가하고 싶습니다.

이와 비슷한 것. sum = (ol.Vat * ol.Quantity) + (ol.Quantity + ol.Price)

결과를 그룹화해야한다고 생각하십니까?

누구나?

+0

그건 나에게 맞지 않습니다. * 각 주문 행 * 및 각 주소에 대한 새'Order' 인스턴스를 만듭니다. 따라서 하나의 주문에 두 개의 주소와 두 개의 주문 행이있는 경우 4 개의 Order 객체를 생성하게됩니다. 그룹 가입을 원하지 않습니까? –

+1

참고로 'PaymentType = (PaymentType) o.PaymentStatus'및'PaymentStatus = (PaymentStatus) o.PaymentType '이라는 두 가지 속성을 잘못 지정 한 것처럼 보입니다. 오타처럼 보입니다. 속성이 서로 바뀝니다. – Jupaol

+0

그리고 Order 클래스에 'Address DeliveryAddress' 속성이 없습니까 (그리고'IList OrderLines' 또는 그와 비슷한 것)? –

답변

0

내 코드를 변경하고 let ol = ShopOrderLines.Where (x => x.OrderId == o.OrderId)를 추가하면 List om 주문 작업이 가능해졌습니다.