2011-08-15 5 views
0

(これは、MSDNのドキュメントから来ている)のは、一例として、このクエリを使用してみましょう:LINQ - 最終的な結果にすべてのフィールドを置く

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders; 
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails; 

var query = 
    from order in orders 
    join detail in details 
    on order.SalesOrderID equals detail.SalesOrderID 
    where order.OnlineOrderFlag == true 
    && order.OrderDate.Month == 8 
    select new 
    { 
     SalesOrderID = order.SalesOrderID, 
     SalesOrderDetailID = detail.SalesOrderDetailID, 
     OrderDate = order.OrderDate, 
     ProductID = detail.ProductID 
    }; 

私はに「注文」に存在するすべてのフィールドを入れたい場合詳細の追加フィールドに加えて、最後のオブジェクト(つまり、新しく選択)、どうすればいいですか?

答えて

1
var query = 
    from order in orders 
    join detail in details 
    on order.SalesOrderID equals detail.SalesOrderID 
    where order.OnlineOrderFlag == true 
    && order.OrderDate.Month == 8 
    select new 
    { 
     SalesOrderHeader = order; 
     SalesOrderDetail = detail; 
    }; 
+0

私の編集を参照してください。私が行ったのと同じように、2つのプロパティを持つ匿名クラスを返すことも、必要なすべてのフィールドを含む具象クラスを作成して、AutoMapperまたはValueInjectorを使用してそれにマップすることもできます。 – lahsrah

0

あなたは、クエリ全体SalesOrderHeaderオブジェクトを返す、またはIncludeメソッドを使用することができますどちらか。

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders; 
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails; 

var query = 
    from order in orders 
    join detail in details 
    on order.SalesOrderID equals detail.SalesOrderID 
    where order.OnlineOrderFlag == true 
    && order.OrderDate.Month == 8 
    select new 
    { 
     SalesOrderID = order.SalesOrderID, 
     SalesOrderDetailID = detail.SalesOrderDetailID, 
     OrderDate = order.OrderDate, 
     ProductID = detail.ProductID, 
     Order = order 
    }; 

またはInclude方法を使用して(あなたのSalesOrderHeaderクラスがSalesOrderDetailクラスにコレクションの参照を持っていると仮定):

ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders; 
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails; 

var query = 
    (from order in orders 
    where order.OnlineOrderFlag == true 
    && order.OrderDate.Month == 8 
    select order).Include(x => x.Details); 
0

はこのようなものですか?

  var query = 
      from order in orders 
      join detail in details 
      on order.SalesOrderID equals detail.SalesOrderID 
      where order.OnlineOrderFlag == true 
      && order.OrderDate.Month == 8 
      select new 
      { 
       SalesOrderID = order.SalesOrderID, 
       SalesOrderDetailID = detail.SalesOrderDetailID, 
       OrderDate = order.OrderDate, 
       ProductID = detail.ProductID, 
       Order = order 
      }; 
関連する問題