Menjana Pertanyaan LINQ Secara Dinamik untuk Objek Tersuai
Dalam senario di mana parameter pertanyaan data ditentukan secara dinamik, keperluan untuk menyusun semula kod boleh menjadi perkara penting bebanan. Adakah mungkin untuk mengelakkan penyusunan semula ini dan menjana pertanyaan LINQ secara dinamik berdasarkan parameter luaran, seperti struktur XML yang disimpan dalam pangkalan data?
Untuk menangani cabaran ini, pertimbangkan untuk menggunakan pepohon ekspresi. Berikut ialah contoh:
var param = Expression.Parameter(typeof(SomeObject), "p"); var exp = Expression.Lambda<Func<SomeObject, bool>>( Expression.Equal( Expression.Property(param, "Name"), Expression.Constant("Bob") ), param ); var query = someObj.Where(exp);
Dalam contoh ini, kami mentakrifkan parameter "p" untuk jenis SomeObject. Ungkapan "exp" menggunakan kaedah Property() untuk mengakses sifat "Name" bagi "p" dan membandingkannya dengan nilai malar "Bob" menggunakan kaedah Equal(). Akhir sekali, kami mencipta ungkapan lambda yang menilai kepada Func
Walaupun pepohon ekspresi memberikan lebih fleksibiliti, ia juga boleh menjadi rumit untuk digunakan. Walau bagaimanapun, mereka menawarkan mekanisme yang berkuasa untuk menjana pertanyaan LINQ secara dinamik berdasarkan input luaran.
Atas ialah kandungan terperinci Bolehkah Pertanyaan LINQ Dijana Secara Dinamik daripada Parameter Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!