Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memilih Sifat Jenis Tanpa Nama secara Dinamik dalam LINQ Menggunakan Pokok Ekspresi?

Bagaimanakah Saya Boleh Memilih Sifat Jenis Tanpa Nama secara Dinamik dalam LINQ Menggunakan Pokok Ekspresi?

Patricia Arquette
Lepaskan: 2025-01-22 19:12:10
asal
488 orang telah melayarinya

How Can I Dynamically Select Anonymous Type Properties in LINQ Using Expression Trees?

Gunakan pepohon ungkapan untuk memilih atribut jenis tanpa nama LINQ secara dinamik

Adalah mungkin untuk menggunakan pepohon ekspresi untuk membina pertanyaan LINQ yang kompleks untuk memilih jenis tanpa nama secara dinamik. Walaupun pertanyaan yang memilih satu atribut mudah dijana, memilih berbilang atribut dalam jenis tanpa nama memerlukan pendekatan yang berbeza.

Untuk melakukan ini, jenis tanpa nama boleh ditakrifkan secara dinamik pada masa jalan menggunakan kelas pelepasan reflektif dan pembantu. Berikut ialah contoh:

Kaedah sambungan SelectDynamic:

<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames)
{
    ... // 实现细节
}</code>
Salin selepas log masuk

Kelas tambahan LinqRuntimeTypeBuilder:

<code>public static class LinqRuntimeTypeBuilder
{
    ... // 实现细节
}</code>
Salin selepas log masuk

Pendekatan ini membolehkan penciptaan pilihan dinamik yang kompleks tanpa sokongan Intellisense, yang berguna untuk kawalan data terikat lewat.

Contoh berikut menjana pertanyaan yang memilih sifat Nama dan Populasi daripada entiti Negara di mana Bandar bersamaan dengan "London":

<code>var v = Countries.Where(c => c.City == "London")
    .SelectDynamic(new[] { "Name", "Population" });</code>
Salin selepas log masuk

Akibatnya, pembolehubah v akan mengandungi jenis dinamik dengan sifat Nama dan Populasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Sifat Jenis Tanpa Nama secara Dinamik dalam LINQ Menggunakan Pokok Ekspresi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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