2011-12-07 17 views
1

Entity Framework 4.1を使用すると、左外部結合をIEnumerableで実行できますか?Left Outer Join with IEnumerable

たとえば、毎月の注文数を数えたいとします。あなたがcontext.Orders.ToList()を呼び出し、アプリケーションにすべての注文をロードする場合にのみ、次の

Month, Count  
1, 0 
2, 0 
3, 10 
4, 20 
5, 0 
6, 0 

答えて

1

を生成する

var range = Enumerable.Range(1,6).AsQueryable(); 
var result = range 
       .GroupJoin(context.Orders, i => i, o => o.Month, new 
       { 
        Month = i, 
        Count = m.Count() 
       }); 

IEnumerableはアプリケーションのメモリにあり、context.Ordersはデータベースのデータを表します。アプリケーションのメモリ内のデータを使用してデータベース内のデータを結合することはできません。 IEnumerableAsQueryableで変換すると、データベースには入れられません。

ADO.NETとSQLを使用して直接要件を実行するには、テンポラリテーブルを作成して入力し、データベース結合を実行するか、テーブル結合パラメータを使用してストアドプロシージャを作成してデータベース結合を実行する必要があります。いずれの技術もEFによってサポートされていません。

+0

私はそれが真実であると思いますが、逆を考えれば、列挙可能な値の和集合を作成することが可能です。左外部結合ではなく、右外部結合が必要です。http://blog.hompus.nl/2010/08/26/joining-an-iqueryable-with-an-ienumerable/ –

関連する問題