2016-04-06 13 views
0

私はこのようなクエリ、している:、私はConcat returnsネストされたクエリはサポートされていません。 Operation1 = 'UnionAll' Operation2 = 'MultiStreamNest'

ProviderNotes.Where(it=>it.NoteEntityId == 272651).Select(it=>new 
{ 
    Id = it.NoteId, 
    Tags = it.ProviderNoteTags.Select(t => t.RelatedEntityId) 
}).Concat(BookingNotes.Where(it=>it.NoteEntityId == 272651).Select(it=>new 
{ 
    Id = it.NoteId, 
    Tags = it.BookingNoteTags.Select(t => t.RelatedEntityId) 
} 
)) 

と私はそれの結果を取得しようとしている取得しています

ネストされたクエリはサポートされていません。 Operation1 =「UnionAll」Operation2 =「MultiStreamNest」

そのクエリの2つの制限があります。 1)私は、さらに用のIQueryable形でそれを必要とするので、私は、ことを結合する前のIEnumerableとして各クエリを取得することはできませんフィルタリング 2)連結されている各クエリが異なるテーブルで異なるリポジトリ内に形成されているため、別個のクエリで内部コレクションを生成できません。

PS私がLinqPadでテストした例を示します。何が起こっているのかというアイデアを提供するのは本当に単純化されています。

答えて

0

連結されている各クエリは、

異なるテーブルと異なるレポに形成されているので、表には、地球上であなたはLINQが有効にできることを期待していないか、別のリポジトリにある場合それは単一のクエリに?

2つのリポジトリが満たす唯一の場所は、LINQコードです。したがって、LINQコードは、は中間結果を実現する必要があります。代わりはありません。

+0

私は正しく説明しなかったでしょう。これらのテーブルは同じコンテキストにあります。親テーブルと子テーブルの構造は同じですが、唯一の違いはdbレベルでは異なるテーブルです。私は特定のテーブルのためのクエリを形成するベースクラスを持って、私はreposを持っているだけで、このベースのものから継承した設定クラスです。具体的なテーブルを指定するだけです。なぜ私が中間結果を使用できないのかは、結合後にページングフィルタを適用する必要があるため、10kレコードを選択して画面上に5個しか表示しないということです。とbtw、タグの内側のクエリなしですべてが正常に動作します。 – KorsaR

関連する問題