Linq IQueryableが適用されて注文を受けているかどうかを確認する

c# expression-trees linq

質問

IQueryableオブジェクトに式ツリー内にOrderByが適用されているかどうかを調べる方法はありますか?

私が持っているシナリオは、グリッドコントロールがページングを有効にし、列ごとにソートすることです。しかし、デフォルトではソートが適用されていないので、LinqからSQLへの行数は非常に大きく選択されます。したがって、すべてのシナリオで注文を行う必要がありますが、主キー他の注文が指定されていない場合

これは可能ですか?

受け入れられた回答

カスタムExpressionVisitorまたは任意の再帰的トラバーサルメカニズムを使用して、クエリの式ツリーを調べることによって見つけることができます。

私はあなたのコードがうまく設計されていないと感じます。おそらく、注文はboolとしてどこかに適用されているという事実だけを保存するべきです。アプリケーションの情報フローを再構築する必要があるかもしれません。

この検査手法を使用すると、この情報をハックのような形で回復しています。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow