Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh memilih lajur tertentu secara dinamik di Linq?

Bagaimanakah saya boleh memilih lajur tertentu secara dinamik di Linq?

Patricia Arquette
Lepaskan: 2025-01-28 20:08:12
asal
386 orang telah melayarinya

How Can I Dynamically Select Specific Columns in LINQ?

LINQ Dinamik: Pilih lajur tertentu

Dengan mengandaikan adegan berikut: Anda mempunyai kelas data yang mengandungi pelbagai bidang, dan anda ingin memilih lajur tertentu berdasarkan dinamik input yang disediakan oleh pengguna. Ini membawa cabaran kerana medan yang dipilih tidak diketahui ketika menyusun.

penciptaan ekspresi lambda dinamik

Untuk mengatasi halangan ini, kita boleh membuat ekspresi lambda secara dinamik yang melaksanakan yang dipilih. Kaedahnya adalah seperti berikut:

cara menggunakan

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();
}
Salin selepas log masuk
dengan fungsi penciptaan lambda, kini anda boleh melaksanakan pilihan dinamik:

Ini akan mewujudkan ekspresi lambda yang secara dinamik memilih sifat "Field1" dan "Field2" untuk melaksanakan unjuran data tersuai secara berkesan.

<论> Kesimpulan

var result = list.Select(CreateNewStatement("Field1, Field2"));
Salin selepas log masuk

Menggunakan teknologi ini, anda dapat mengatasi sekatan definisi statik unjuran LINQ, dan membolehkan pemilihan dinamik mengikut input. Ini membolehkan fleksibiliti dan kesesuaian yang lebih besar untuk mencapai fleksibiliti dan kebolehsuaian yang lebih besar dalam senario pemprosesan data yang tidak diketahui terlebih dahulu.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memilih lajur tertentu secara dinamik di Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan