と の両方で操作できる拡張メソッドがIEnumerable
ありIQueryable
ます。このメソッドは、最後に入力と呼び出しを解析しますSkip().Take()
。
public static IEnumerable<T> SelectRange<T>(
this IEnumerable<T> target,
RangeHeaderValue range
)
このメソッドは で機能しIQueryable
ますが、 を返しますIEnumerable
。したがって、変換する別のメソッドを追加し、最初のメソッドを呼び出して再度変換します。
public static IQueryable<T> SelectRange<T>(
this IQueryable<T> target,
RangeHeaderValue range
)
{
return target.AsEnumerable().SelectRange(range).AsQueryable();
}
このようにチェーン変換しても安全ですか? IQueryable
代わりにメモリ内コレクションでメソッドを実行して、プロバイダーに干渉するのではないかと心配しています。レイジー/イーガー ローディングの基本は理解していますが、これは非常に複雑なトピックであり、うまくいくとは限りません。
注:IQueryable
チェーンの危険性については受け入れられた回答は正しいですが、メソッドを実装してメソッドから呼び出すことIEnumerable
(単に物事を切り替えるだけ)は安全であることを追加したいと思います。