ダイナミックLINQ:特定の列を選択
次のシーンを想定してください。複数のフィールドを含むデータクラスがあり、ユーザーが提供する入力動的に基づいて特定の列を選択する必要があります。これは、選択したフィールドがコンパイル時に不明であるため、課題をもたらします。
ダイナミックラムダの表現作成
の使用方法
lambda作成関数を使用すると、動的な選択を実行できます:これにより、「field1」および「field2」プロパティを動的に選択して、データのカスタム投影を効果的に実行するラムダ式が作成されます。
<code class="language-csharp">public Func<Data, Data> CreateNewStatement(string fields) { // 参数 var xParameter = Expression.Parameter(typeof(Data), "o"); // 新实例 var xNew = Expression.New(typeof(Data)); // 初始化器 var bindings = fields.Split(',') .Select(o => o.Trim()) .Select(o => { var mi = typeof(Data).GetProperty(o); var xOriginal = Expression.Property(xParameter, mi); return Expression.Bind(mi, xOriginal); }); // 初始化 var xInit = Expression.MemberInit(xNew, bindings); // Lambda表达式 var lambda = Expression.Lambda<Func<Data, Data>>(xInit, xParameter); // 编译 return lambda.Compile(); }</code>
結論
このテクノロジーを使用して、LINQ投影の静的定義の制限を克服し、入力に従って動的選択を可能にすることができます。これにより、柔軟性と適応性が向上し、事前に知られていないデータ処理シナリオで柔軟性と適応性が向上します。以上がLINQで特定の列を動的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。