操作が常に操作の前に適用される場合、 OData プロトコルのドキュメントに言及が見つかりませんでした。明らかに、一貫したページ検索アルゴリズムを実装する場合、そうすることが理にかなっています。$filter
$skip
私の懸念は、式ツリーがそのような制約を課していないことです。たとえば、次の 2 つのクエリは通常、異なる結果を生成します。
IQueryable<string> query = (new[] { "aaa", "eee", "bbbb", "cccc", "dddd" }).AsQueryable();
query.Where(arg => arg.Length > 3).Skip(1);
query.Skip(1).Where(arg => arg.Length > 3);
OData の ASP.NET Web API RC 実装を使用していくつかの簡単なテストを行いましたが、演算子がクエリ文字列のどこにあるかに関係なく、$filter
前に適用されます。$skip
しかし、これは一般的に真実ですか?