Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencari Berbilang Kata Kunci dengan Cekap dalam Senarai Menggunakan Lambda/LINQ?

Bagaimana untuk Mencari Berbilang Kata Kunci dengan Cekap dalam Senarai Menggunakan Lambda/LINQ?

Susan Sarandon
Susan Sarandonasal
2025-01-21 11:56:09567semak imbas

How to Efficiently Search for Multiple Keywords in a List Using Lambda/LINQ?

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:

  • Senarai Utama: Senarai yang mengandungi medan Komen
  • kata kunci: senarai kata kunci untuk dicari

Keputusan yang dijangkakan:

  • Senarai baharu yang mengandungi rekod yang medan Komennya dalam Senarai Utama mengandungi sebarang kata kunci dalam senarai kata kunci.

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:

  • item: senarai kata kunci untuk dicari
  • filterPattern: ungkapan yang digunakan untuk menyemak sama ada rekod mengandungi kata kunci tertentu
  • isOr: bendera yang menunjukkan sama ada hendak menggunakan operator ATAU atau DAN untuk menggabungkan predikat (lalai ialah ATAU)

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!

Kenyataan:
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