データ操作の分野では、LINQ (言語統合クエリ) は、タイプセーフでデータをクエリおよび操作するための強力なメカニズムを提供します。やり方。ただし、ソース コードを再コンパイルせずに LINQ クエリを動的に生成したい場合はどうすればよいでしょうか?これにより、実行時にクエリ パラメータを追加または変更できるようになり、アドホック クエリの柔軟性が向上します。
Name、City、State などのプロパティを持つ SomeObject という名前のクラスの例を考えてみましょう。クエリ パラメーターを含む XML 構造がデータベースに保存されているとします。コードを再コンパイルせずに、これらのパラメーターを使用して新しい LINQ クエリを生成できますか?
式ツリーは、この課題に対する解決策を提供します。 Expression クラスと ExpressionLambda クラスを利用すると、実行時に動的な LINQ クエリを作成できます。
これを実現する方法は次のとおりです:
var param = Expression.Parameter(typeof(SomeObject), "p"); var exp = Expression.Lambda<Func<SomeObject, bool>>( Expression.Equal( Expression.Property(param, "Name"), Expression.Constant("Bob") ), param ); var query = someObj.Where(exp);
この例では:
この動的なクエリ生成により、実行時に検索パラメータを変更できるため、クエリがより柔軟で適応性のあるものになります。
以上が再コンパイルせずに実行時に LINQ クエリを動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。