EFコア参加エンティティIQueryable(ID付き)IQueryable

c# entity-framework-core linq-to-sql

質問

私は、 IQueryable<Entity>持つエンティティIDのリストであるIQueryable<int>に参加しようとします。

このために私は次のコードを使用します:

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);

このコードはメモリ内のリストを使用していますが、LINQ with SQLを試すとJoinは無視されます。

私はidsをメモリにロードしたくありません。これはLINQ to SQLでも可能ですか?

人気のある回答

次のようなことができます:

IQueryable<Entity> entityQuery = _context.Entities.Where(x => ...);
IQueryable<int> idQuery = _context.AccessRights.Where(x => ...).Select(x => x.Id);
entityQuery = entityQuery.Where(x => idQuery.Contains(x.Id));

idsをメモリにロードせずに探している結果が得られます。しかし、それはそれを理想的ではない巨大なSQL INステートメントに変換するかもしれません。

または、AccessRightsに直接参加することもできます:

IQueryable<Entity> entityQuery = from e in _context.Entities.Where(x => ...)
                                 join ar in _context.AccessRights.Where(x => ...)
                                     on e.Id equals ar.Id
                                 select e;


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ