C# で IQueryable を公開しているメソッドで、特定のプロパティのみをフィルター処理できるようにすることは可能ですか?
または、where 句を監視して、特定のプロパティでフィルタリングされているもののみを許可することはできますか?
C# で IQueryable を公開しているメソッドで、特定のプロパティのみをフィルター処理できるようにすることは可能ですか?
または、where 句を監視して、特定のプロパティでフィルタリングされているもののみを許可することはできますか?
IQueryable
Provider
として入力されたプロパティを公開しますIQueryProvider
。このクエリプロバイダーは、最終的にクエリに対応し、適切な結果を返す責任があります(通常、必要な作業の大部分はヘルパークラスに委任されますが、プロセスを調整するのはクエリプロバイダーです)。
したがって、質問に対する簡単な答えは次のとおりです。クエリプロセスにカスタムロジックを挿入するには、IQueryable.Provider
実装を制御し、最終的にこのロジックを実装するクエリプロバイダーを返すようにする必要があります。
カスタムクエリプロバイダーの構築に取り組む場合は、このMSDNウォークスルーと、MattWarrenによるこの優れた一連のブログ投稿で詳細を確認してください。