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

如何使用 Lambda/LINQ 在評論清單中搜尋多個關鍵字?

Barbara Streisand
Barbara Streisand原創
2025-01-21 12:13:09886瀏覽

How Can I Use Lambda/LINQ to Search for Multiple Keywords in a List of Comments?

使用包含條件的Lambda/LINQ進行多關鍵字搜尋

本指南示範如何同時在評論清單中搜尋多個關鍵字。雖然針對單一關鍵字搜尋的範例很多,但本指南提供了一種一次性搜尋任何關鍵字實例的解決方案。

實現此目標,可以採取以下步驟:

  1. 建立擴充方法:
<code class="language-csharp">public static class QueryableExtensions
{
    public static IQueryable<T> FilterByItems<T, TItem>(this IQueryable<T> query, IEnumerable<TItem> items,
        Expression<Func<T, TItem, bool>> filterPattern, bool isOr)
    {
        // ... 方法实现 ...
    }
}</code>
  1. 使用方法:
<code class="language-csharp">var newList = MainList
    .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true)
    .ToList();</code>

此處,FilterByItems 方法產生一個執行所需過濾的謂詞。 keywords 參數表示搜尋字詞列表,提供的 lambda 表達式檢查 Comments 欄位是否包含任何這些關鍵字。 isOr 參數決定過濾是邏輯 OR(任何關鍵字匹配)還是邏輯 AND(所有關鍵字匹配)。

  1. 擴充方法實作:

FilterByItems 方法透過循環遍歷關鍵字來建構謂詞。它用每個關鍵字取代提供的 lambda 表達式中的參數,為每個關鍵字建立一個單獨的條件。最後,它根據 isOr 值使用 OR 或 AND 來組合這些條件,建立一個可以應用於查詢的單一謂詞。

  1. 表達式替換的輔助類別:

ExpressionReplacer 類別用於取代 lambda 表達式中的表達式。它以表達式字典作為輸入,並修改原始表達式,取代與字典中匹配的表達式。這允許根據提供的關鍵字動態修改謂詞。

透過這種方法,可以使用 Lambda/LINQ 語法有效且有效率地在評論中搜尋多個關鍵字。

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

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