Heim >Backend-Entwicklung >C++ >Wie kann ich Lambda/LINQ verwenden, um in einer Kommentarliste nach mehreren Schlüsselwörtern zu suchen?

Wie kann ich Lambda/LINQ verwenden, um in einer Kommentarliste nach mehreren Schlüsselwörtern zu suchen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-21 12:13:09885Durchsuche

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

Multi-Keyword-Suche mit Lambda/LINQ mit Bedingungen

Diese Anleitung zeigt, wie Sie gleichzeitig nach mehreren Schlüsselwörtern in der Kommentarliste suchen. Obwohl es viele Beispiele für die Suche nach einem einzelnen Schlüsselwort gibt, bietet dieser Leitfaden eine Lösung für die Suche nach einer beliebigen Schlüsselwortinstanz auf einmal.

Um dieses Ziel zu erreichen, können Sie die folgenden Schritte unternehmen:

  1. Erweiterungsmethode erstellen:
<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. Verwendung:
<code class="language-csharp">var newList = MainList
    .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true)
    .ToList();</code>

Hier generiert die Methode FilterByItems ein Prädikat, das die erforderliche Filterung durchführt. Der Parameter keywords stellt eine Liste von Suchbegriffen dar und der bereitgestellte Lambda-Ausdruck prüft, ob das Feld Comments eines dieser Schlüsselwörter enthält. Der Parameter isOr bestimmt, ob die Filterung ein logisches ODER (alle Schlüsselwörter stimmen überein) oder ein logisches UND (alle Schlüsselwörter stimmen überein) erfolgt.

  1. Implementierung der Erweiterungsmethode:
Die

FilterByItems-Methode erstellt ein Prädikat, indem sie die Schlüsselwörter durchläuft. Es ersetzt die Argumente im bereitgestellten Lambda-Ausdruck durch jedes Schlüsselwort und erstellt so eine separate Bedingung für jedes Schlüsselwort. Schließlich werden diese Bedingungen mithilfe von ODER oder UND basierend auf dem Wert isOr kombiniert, wodurch ein einzelnes Prädikat erstellt wird, das auf die Abfrage angewendet werden kann.

  1. Hilfsklasse zur Ausdrucksersetzung:
Die Klasse

ExpressionReplacer wird verwendet, um Ausdrücke in Lambda-Ausdrücken zu ersetzen. Es verwendet ein Wörterbuch mit Ausdrücken als Eingabe, ändert die ursprünglichen Ausdrücke und ersetzt sie durch Ausdrücke, die dem Wörterbuch entsprechen. Dies ermöglicht eine dynamische Änderung von Prädikaten basierend auf bereitgestellten Schlüsselwörtern.

Mit diesem Ansatz können Sie mithilfe der Lambda/LINQ-Syntax effektiv und effizient nach mehreren Schlüsselwörtern in Kommentaren suchen.

Das obige ist der detaillierte Inhalt vonWie kann ich Lambda/LINQ verwenden, um in einer Kommentarliste nach mehreren Schlüsselwörtern zu suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn