Iは、次の行がDESC日付順に並べた:Entity Frameworkの - SkipWhile
var result = query.Take(4).ToList();
0 Dog 2016-03-08
9 Cat 2016-03-07
2 Elephant 2016-03-06
8 Apple 2016-03-05
次のクエリがなければならない:順序付けられた要素の数(例えば4)限定
var query = this.DbContext.Items.OrderByDescending(g => g.UpdatedAt);
0 Dog 2016-03-08
9 Cat 2016-03-07
2 Elephant 2016-03-06
8 Apple 2016-03-05
3 Banana 2016-03-04
7 Juice 2016-03-03
4 Potato 2016-03-02
5 Cafee 2016-03-01
最初のクエリが返します返品限定(4)ID 3から始まる注文された要素の数:
var result = query.ToList()
.SkipWhile(g => g.Id != startFrom.Value)
.Take(limit));
3 Banana 2016-03-04
7 Juice 2016-03-03
4 Potato 2016-03-02
5 Cafee 2016-03-01
問題はformanceは、SkipWhile
がEFでサポートされていないため、すべてのデータを最初にフェッチする必要があります。
もちろん、私は、すべての古い行をカットすることができます。
var banana = this.Db.Context.Items.FirstOrDefault(g => g.Id == 3);
var result = query.Where(g => g.CreatedAt < banana.CreatedAt).Take(limit);
は、単一の、うまくパフォーマンスEFクエリによってそれを達成することが可能ですか?
'query.ToList()を指定すると、EFはDBに対してクエリを実行します。 '.Skip(4)'だけを試してみてください。あなたは4つの項目でリストをページしようとしていますか? –
スキップする要素の数はわかりません。 – Rakoo