Heim > Backend-Entwicklung > C++ > Wie kann man mit Lambda/LINQ effizient nach mehreren Schlüsselwörtern in einer Liste suchen?

Wie kann man mit Lambda/LINQ effizient nach mehreren Schlüsselwörtern in einer Liste suchen?

Susan Sarandon
Freigeben: 2025-01-21 11:56:09
Original
502 Leute haben es durchsucht

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

Lambda/LINQ kombiniert Enthält Bedingungen für die Suche mit mehreren Schlüsselwörtern

Bei vielen Datenbankoperationen ist es oft notwendig, in Textfeldern nach bestimmten Schlüsselwörtern zu suchen. Dies beinhaltet normalerweise die Verwendung des LIKE-Operators in SQL, zum Beispiel:

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

Diese Abfrage durchsucht jedes Schlüsselwort separat, was zu einer komplexen Abfrage führt, die mehrere LIKE-Klauseln enthält. Um eine ähnliche Suche mit Lambda/LINQ in C# durchzuführen, müssen Sie das folgende Szenario berücksichtigen:

Bekannte Erkrankungen:

  • MainList: Liste mit Kommentarfeld
  • Schlüsselwörter: Liste der zu durchsuchenden Schlüsselwörter

Erwartete Ergebnisse:

  • Eine neue Liste mit Datensätzen, deren Kommentarfeld in der Hauptliste ein beliebiges Schlüsselwort in der Schlüsselwortliste enthält.

Die Lösung nutzt eine Erweiterungsmethode namens FilterByItems:

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

FilterByItems-Methode akzeptiert die folgenden Parameter:

  • Elemente: Liste der zu durchsuchenden Schlüsselwörter
  • filterPattern: ein Ausdruck, der verwendet wird, um zu prüfen, ob ein Datensatz ein bestimmtes Schlüsselwort enthält
  • isOr: ein Flag, das angibt, ob der OR- oder AND-Operator zum Kombinieren von Prädikaten verwendet werden soll (Standard ist OR)

Diese Methode ersetzt die Platzhalterparameter im filterPattern-Ausdruck durch jedes Schlüsselwort in der Elementliste. Das generierte Prädikat wird dann zum Filtern der MainList verwendet.

Die ExpressionReplacer-Klasse übernimmt die Parameterersetzung in Prädikaten. Es ersetzt Platzhalterparameter durch tatsächliche Schlüsselwortwerte.

Dieser Ansatz ermöglicht die effiziente Suche nach mehreren Schlüsselwörtern in einer Abfrage, wodurch die Notwendigkeit mehrerer LIKE-Klauseln reduziert und SQL-Anweisungen vereinfacht werden.

Das obige ist der detaillierte Inhalt vonWie kann man mit Lambda/LINQ effizient nach mehreren Schlüsselwörtern in einer Liste suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage