LINQ の式ツリーを使用した匿名オブジェクトの選択
式ツリーは、動的 LINQ クエリを作成するための強力なメカニズムを提供します。ただし、一部のオーバーロードでは複数のプロパティの指定に対応できない場合があるため、匿名オブジェクトを選択するクエリを生成するのは困難な場合があります。
複数属性の匿名オブジェクトの選択
この課題を軽減するには、Reflective Emission クラスと Helper クラスを利用します。次のコードは、プロパティのコレクションから匿名型を動的に生成できる SelectDynamic メソッドの実装例を示しています。
<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames) { ... }</string></code>
動的型の生成
SelectDynamic メソッドは、LinqRuntimeTypeBuilder クラスを使用して、プロパティのコレクションから動的型を構築します。これにより、選択ラムダ式で複数のプロパティを指定できるようになります。
匿名型の作成
MemberBindings を利用することで、セレクター式は必要なプロパティを使用して匿名型を初期化します。これらのバインディングは、ソース項目とプロパティ値の間の関係を確立します。
クエリの実行
次に、プロバイダーの CreateQuery メソッドを使用して、セレクター式を使用して新しいクエリを作成します。このクエリは、元のソースから動的匿名オブジェクトを選択します。
使用例
次のコードは、SelectDynamic メソッドの使用方法を示しています。
<code>var v = from c in Countries where c.City == "London" select new { c.Name, c.Population };</code>
その他の注意事項
以上がLINQ で式ツリーを使用して複数のプロパティを持つ匿名オブジェクトを動的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。