0
IQueryable<int>
に参加しようとしました。エンティティIDのリストはIQueryable<Entity>
です。私は次のコードを使用します。このためEFコア参加エンティティIQueryable with IQueryable
:
IQueryable<Entity> entityQuery = _context.Entities.Where(x => ...);
IQueryable<int> idQuery = _context.AccessRights.Where(x => ...).Select(x => x.Id);
query = entityQuery.Join(idQuery, x => x.Id, x => x, (x, y) => x);
このコードは、メモリ内のリストと協力して、私はSQLにLINQでそれをしようとした場合、しかし、Join
は無視なっています。
私はidsをメモリにロードしたくありません。これはLINQ to SQLでも可能ですか?
'_context.Ids'は、データベーステーブルにマップされていますか?いいえ、それは不可能です、実際には 'IQueryable'でしょうか? –
@IvanStoev 'IQueryable'は、一致するEntity.Idを持つ複数のエンティティIDの選択です。 –
EFコアには、SQLに変換できないクエリをいくつかの部分に分割し、それらを別々に実行してメモリにマージするという概念があります。ログオンを有効にすると、少なくとも2つのSQLクエリが実行されていることがわかります。そうすれば、 'entityQuery'には' join'はありませんが、その結果がアカウントになるはずです。 –