ホームページ >バックエンド開発 >C++ >LINQクエリで列を動的に選択するにはどうすればよいですか?

LINQクエリで列を動的に選択するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-28 19:56:10984ブラウズ

How Can I Dynamically Select Columns in LINQ Queries?
Linq選択のダイナミック列

リストが不明な場合、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 サイトの他の関連記事を参照してください。

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