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執行類似的搜索,需要考慮以下場景:
已知條件:
預期結果:
解決方案利用一個名為FilterByItems的擴充方法:
<code class="language-csharp">var newList = MainList .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true) .ToList();</code>
FilterByItems方法接受以下參數:
此方法實作以items清單中的每個關鍵字取代filterPattern表達式中的佔位符參數。然後,產生的謂詞用來過濾MainList。
ExpressionReplacer類別處理謂詞中的參數替換。它用實際的關鍵字值取代佔位符參數。
這種方法允許有效率地在一個查詢中搜尋多個關鍵字,減少了對多個LIKE子句的需求,並簡化了SQL語句。
以上是如何使用 Lambda/LINQ 在清單中有效率地搜尋多個關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!