2017-04-10 6 views
1

このSQLクエリをlinqクエリに変換するのが難しいです。その注文に添付された注文の詳細をすべて選択しています。 SQLでは、クエリは正しいです。私はlinqでそれを書くときにすべてが乾いたときです。ここに私のコードは次のようになります。この結果enter image description hereSQLをlinqに修正する

を生成するが、私は

select 
o.OrderID, 
o.CustomerID, 
od.UnitPrice, 
od.Quantity, 
od.productid, 
p.ProductName 
from Orders o 
inner join [Order Details] od 
    on o.OrderID = od.OrderID 
inner join Products p 
    on p.ProductID = od.ProductID 
where o.OrderID = 10248 

を書いた場合、SQLに私のうち予想

   var result = from order in orders 
         join orderDetail in orderDetails 
         on order.OrderID equals orderDetail.OrderID 

         select new OrderVm 
         { 
          OrderId = order.OrderID, 
          OrderDetails = order.Order_Details.Select(x => 
          new OrderDetailVm 
          { 
           OrderId = orderDetail.OrderID, 
           UnitPrice = orderDetail.UnitPrice, 
           Quantity = orderDetail.Quantity, 
           ProductId = orderDetail.ProductID 

          }) 
         }; 

      return result.ToList(); 

は、それが道からのように見えるenter image description here

+0

2つのテーブルのデータを個別に提供できますか? –

答えて

0

で来ます結合がすでに存在し、使用している結合が冗長であるネストされたオブジェクトでOrder_Detailsを使用していることを確認します。

var result = from order in orders 
        select new OrderVm 
        { 
         OrderId = order.OrderID, 
         OrderDetails = order.Order_Details.Select(x => 
         new OrderDetailVm 
         { 
          OrderId = x.OrderID, 
          UnitPrice = x.UnitPrice, 
          Quantity = x.Quantity, 
          ProductId = x.ProductID 
         }) 
        }; 
+0

結果セットをスリムにするためにsqlを追加しました –

+0

@TroyBryant OK、必要がない場合は、それを外すことができます。これで質問に答えたり、詳細を探していますか? – Jerm86

+0

申し訳ありませんが正確に何を私が探しています。各注文にはオブジェクトの配列である注文の詳細があります。 –

関連する問題