Lambda/LINQ menggabungkan Mengandungi syarat untuk carian berbilang kata kunci
Dalam banyak operasi pangkalan data, selalunya perlu mencari kata kunci tertentu dalam medan teks. Ini biasanya melibatkan penggunaan operator LIKE dalam SQL, contohnya:
<code class="language-sql">SELECT * FROM MainList WHERE Comment LIKE '%keyword1%' OR Comment LIKE '%keyword2%'</code>
Pertanyaan ini mencari setiap kata kunci secara berasingan, menghasilkan pertanyaan kompleks yang mengandungi berbilang klausa SUKA. Untuk melakukan carian serupa menggunakan Lambda/LINQ dalam C#, anda perlu mempertimbangkan senario berikut:
Syarat yang diketahui:
Keputusan yang dijangkakan:
Penyelesaian menggunakan kaedah sambungan yang dipanggil FilterByItems:
<code class="language-csharp">var newList = MainList .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true) .ToList();</code>
Kaedah FilterByItems menerima parameter berikut:
Kaedah ini menggantikan parameter pemegang tempat dalam ungkapan FilterPattern dengan setiap kata kunci dalam senarai item. Predikat yang dihasilkan kemudiannya digunakan untuk menapis Senarai Utama.
Kelas ExpressionReplacer mengendalikan penggantian parameter dalam predikat. Ia menggantikan parameter pemegang tempat dengan nilai kata kunci sebenar.
Pendekatan ini membolehkan carian cekap berbilang kata kunci dalam satu pertanyaan, mengurangkan keperluan untuk berbilang klausa LIKE dan memudahkan pernyataan SQL.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Berbilang Kata Kunci dengan Cekap dalam Senarai Menggunakan Lambda/LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!