あなたが投稿したコードには少なくとも 3 つの間違いがあるため、実際のコードではないと思います。あなたが説明した症状を得るには、最も可能性の高い原因は、IEnumerable<T>
どこかで使用し、そこから作成していることです。エンド ツー エンドのクエリ構成を取得するには (つまりTOP
、データベースで を実行するには)、 を使用する必要がありますIQueryable<T>
。たとえば、以下は壊れています。
IEnumerable<SomeType> data = db.SomeTable;
var c = (from l in data
where l.Name == "test"
select l).Take(10);
ただし、最初の行のみが変更されていることに注意してください。
IQueryable<SomeType> data = db.SomeTable;
var c = (from l in data
where l.Name == "test"
select l).Take(10);
これも次と同じであることに注意してください。
IQueryable<SomeType> data = db.SomeTable;
var c = data.Where(l => l.Name == "test").Take(10);
IEnumerable<T>
したがって、時期尚早に(またはリストなどの同様のものを)強制していないことを確認してください。
最後に、スキップ/テイクを適用している場合、IIRC Entity Framework は順序付けを要求します (適用しない場合はエラーになります) IEnumerable<T>
。具体的にorder by
も。