長さ > 3000の整数配列int[] ids
があります。データベース テーブルから上位 15 レコードを の順序で取得したいと考えていますArray.IndexOf(ids, recordId)
。
私がやっている:
IQueryable<Record> records = from p in db.Records.Where(p => ids.Contains(p.Id))
select p;
records = records.ToList()
.OrderBy(p => Array.IndexOf(ids, p.Id)).AsQueryable().Take(15);
これは非常に非効率的です。3000 を超えるレコードがメモリに読み込まれるのに、必要なのは 15 レコードだけだからです。
問題を解決する方法はありますか?ありがとうございました。
いくつかの既存の投稿: