ホームページ >バックエンド開発 >C++ >LINQ で式ツリーを使用して複数のプロパティを持つ匿名オブジェクトを動的に選択するにはどうすればよいですか?

LINQ で式ツリーを使用して複数のプロパティを持つ匿名オブジェクトを動的に選択するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 19:07:09430ブラウズ

How Can I Use Expression Trees to Dynamically Select Anonymous Objects with Multiple Properties in LINQ?

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>

その他の注意事項

    動的型は実行時に作成されるため、IntelliSense は動的型には使用できません。
  • このアプローチは、遅延バインド データ コントロールを使用する場合に特に役立ちます。

以上がLINQ で式ツリーを使用して複数のプロパティを持つ匿名オブジェクトを動的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。