Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Klausa Dynamic WHERE dalam LINQ untuk Penapisan Data Fleksibel?
Apabila menggunakan pertanyaan LINQ, anda mungkin perlu menjana klausa WHERE secara dinamik berdasarkan input pengguna. Ini boleh dicapai dengan merantai beberapa klausa WHERE bersama-sama, seperti dalam contoh berikut:
KaedahGetProductList()
menerima kamus sebagai parameter, yang mewakili satu set keadaan penapis. Kemudian, gunakan klausa where untuk membina pertanyaan LINQ untuk menapis keputusan berdasarkan syarat dalam kamus.
Setiap klausa ditambah pada pertanyaan dengan menyemak sama ada kunci yang sepadan wujud dalam kamus. Jika ada, tapis pertanyaan berdasarkan nilai yang dikaitkan dengan kunci itu.
Contoh kod berikut menunjukkan cara melaksanakan kaedah ini:
<code class="language-csharp">public IOrderedQueryable<productdetail> GetProductList(string productGroupName, string productTypeName, Dictionary<string, List<string>> filterDictionary) { var q = from c in db.ProductDetail where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName select c; //添加select c;避免编译错误 foreach (var filter in filterDictionary) { var fieldName = filter.Key; var values = filter.Value; if (values.Count > 0) { q = q.Where(c => values.Contains(c.GetType().GetProperty(fieldName).GetValue(c, null)?.ToString())); } } return q.OrderBy(c => c.ProductTypeName); }</code>
Anda boleh membuat pertanyaan LINQ yang menyasarkan kriteria carian tertentu dengan menjana klausa WHERE secara dinamik berdasarkan input pengguna. Pendekatan ini memberikan fleksibiliti dan membolehkan penapisan data yang mudah berdasarkan parameter yang ditentukan pengguna. Ambil perhatian bahawa kod ini menganggap bahawa nilai filterDictionary
ialah List<string>
dan nama atribut objek ProductDetail
adalah konsisten dengan nama kunci filterDictionary
. Untuk pemprosesan yang lebih mantap, adalah disyorkan untuk menambah pengendalian pengecualian dan pengesahan nama atribut.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Klausa Dynamic WHERE dalam LINQ untuk Penapisan Data Fleksibel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!