使用包含條件的Lambda/LINQ進行多關鍵字搜尋
本指南示範如何同時在評論清單中搜尋多個關鍵字。雖然針對單一關鍵字搜尋的範例很多,但本指南提供了一種一次性搜尋任何關鍵字實例的解決方案。
實現此目標,可以採取以下步驟:
<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>
<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(所有關鍵字匹配)。
FilterByItems
方法透過循環遍歷關鍵字來建構謂詞。它用每個關鍵字取代提供的 lambda 表達式中的參數,為每個關鍵字建立一個單獨的條件。最後,它根據 isOr
值使用 OR 或 AND 來組合這些條件,建立一個可以應用於查詢的單一謂詞。
ExpressionReplacer
類別用於取代 lambda 表達式中的表達式。它以表達式字典作為輸入,並修改原始表達式,取代與字典中匹配的表達式。這允許根據提供的關鍵字動態修改謂詞。
透過這種方法,可以使用 Lambda/LINQ 語法有效且有效率地在評論中搜尋多個關鍵字。
以上是如何使用 Lambda/LINQ 在評論清單中搜尋多個關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!