Linq選択のダイナミック列
特定の列を動的に選択するために、CreateNewStatementメソッドを使用してLambda式を動的に作成できます。
このメソッドは、コンマのリストを使用してリストを文字列として分離し、この式を動的に生成します。
<code class="language-csharp">public class Data { public string Field1 { get; set; } public string Field2 { get; set; } public string Field3 { get; set; } public string Field4 { get; set; } public string Field5 { get; set; } }</code>
その後、CreateNewStatementメソッドを使用してLambda式を作成し、それを渡して選択できます。
<code class="language-csharp">private 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); var lambda = Expression.Lambda<Func<Data, Data>>(xInit, xParameter); return lambda.Compile(); }</code>これにより、指定されたフィールドに入力されたデータオブジェクトを使用したシーケンスが返されます。このテクノロジーは、コンパイル時に不明な分野に適していることに注意してください。選択したフィールドが静的である場合、従来のラムダ発現または反射ベースの方法がより効率的です。
以上がLINQクエリで列を動的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。