首頁 >後端開發 >C++ >如何使用 Lambda/LINQ 在清單中有效率地搜尋多個關鍵字?

如何使用 Lambda/LINQ 在清單中有效率地搜尋多個關鍵字?

Susan Sarandon
Susan Sarandon原創
2025-01-21 11:56:09530瀏覽

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

Lambda/LINQ結合Contains條件進行多關鍵字搜尋

在許多資料庫操作中,經常需要在文字欄位中搜尋特定的關鍵字。這通常涉及在SQL中使用LIKE運算符,例如:

<code class="language-sql">SELECT * FROM MainList
WHERE Comment LIKE '%keyword1%'
OR Comment LIKE '%keyword2%'</code>

此查詢分別搜尋每個關鍵字,導致一個包含多個LIKE子句的複雜查詢。要在C#中使用Lambda/LINQ執行類似的搜索,需要考慮以下場景:

已知條件:

  • MainList:包含Comments欄位的清單
  • keywords:要搜尋的關鍵字清單

預期結果:

  • 一個新列表,包含MainList中Comments字段包含keywords列表中任意關鍵字的記錄。

解決方案利用一個名為FilterByItems的擴充方法:

<code class="language-csharp">var newList = MainList
   .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true)
   .ToList();</code>

FilterByItems方法接受以下參數:

  • items:要搜尋的關鍵字清單
  • filterPattern:一個表達式,用來檢查記錄是否包含特定關鍵字
  • isOr:一個標誌,指示是使用OR還是AND運算子組合謂詞(預設為OR)

此方法實作以items清單中的每個關鍵字取代filterPattern表達式中的佔位符參數。然後,產生的謂詞用來過濾MainList。

ExpressionReplacer類別處理謂詞中的參數替換。它用實際的關鍵字值取代佔位符參數。

這種方法允許有效率地在一個查詢中搜尋多個關鍵字,減少了對多個LIKE子句的需求,並簡化了SQL語句。

以上是如何使用 Lambda/LINQ 在清單中有效率地搜尋多個關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn