2012-02-02 10 views
0

フィールドの1つが関連する子のエンティティのコレクションである親エンティティになるLinqクエリを作成しようとしています。たとえば、すべての顧客エンティティのコレクションと、すべての注文エンティティのコレクションがあります。オーダーエンティティには、関連する親顧客エンティティへのリンクを含むcustomerPKという項目があります。私は2つのコレクションを結合するLinqクエリを作成し、顧客エンティティのすべてのフィールドと、その特定の顧客エンティティに関するすべての関連注文エンティティのコレクションオブジェクトである追加フィールドを作成します。親エンティティの1つのフィールドが子エンティティの集合であるLinqクエリ

答えて

1

これはうまくいくはずです。

EDIT:この例に基づいて、左外部結合を実行するコードが更新されました。 http://smehrozalam.wordpress.com/2009/06/10/c-left-outer-joins-with-linq/。これで、注文のないお客様が含まれます。

var query = from c in customers 
      join o in orders on c.ID equals o.CustomerPK into joined 
      from j in joined.DefaultIfEmpty() 
      group j by c into g 
      select new { Customer = g.Key, Orders = g.Where(x => x != null) }; 

注意、受注のグループ化の選択にWhereの使用はので、ヌル注文は代わりない顧客のための単一のヌル注文を含むグループで終わるの、この時点で除外されています注文があります。

次に、使用例をいくつか示します。

foreach (var result in query) 
{ 
    Console.WriteLine("{0} (ID={1})", result.Customer.Name, result.Customer.ID); 
    foreach (var order in result.Orders) 
    { 
     Console.WriteLine(order.Description); 
    } 
} 

この例は2つのフィールドを持つオブジェクト内の結果、顧客と、関連する受注のグループが、あなたが指定されているクエリで顧客オブジェクトの個々のフィールドを選択できない理由はありませんあなたの投稿に

+0

ご注文いただいていないお客様のために、このクエリを変更する必要はありますか?これらの顧客は結果に含まれません。 – user31673

+0

@ user54064:指定したとおりに動作するように、今すぐ回答を更新しました。遅い応答に申し訳ありませんが、私はリンクされた例を遭遇するまでこれを行う方法を知らなかった。 –

関連する問題