Lambda/LINQ combine Contient des conditions pour la recherche multi-mots clés
Dans de nombreuses opérations de base de données, il est souvent nécessaire de rechercher des mots-clés spécifiques dans les champs de texte. Cela implique généralement l'utilisation de l'opérateur LIKE en SQL, par exemple :
<code class="language-sql">SELECT * FROM MainList WHERE Comment LIKE '%keyword1%' OR Comment LIKE '%keyword2%'</code>
Cette requête recherche chaque mot-clé séparément, ce qui donne une requête complexe contenant plusieurs clauses LIKE. Pour effectuer une recherche similaire à l'aide de Lambda/LINQ en C#, vous devez envisager le scénario suivant :
Conditions connues :
Résultats attendus :
La solution utilise une méthode d'extension appelée FilterByItems :
<code class="language-csharp">var newList = MainList .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true) .ToList();</code>
La méthode FilterByItems accepte les paramètres suivants :
Cette méthode remplace les paramètres d'espace réservé dans l'expression filterPattern par chaque mot-clé de la liste des éléments. Le prédicat généré est ensuite utilisé pour filtrer la MainList.
La classe ExpressionReplacer gère le remplacement des paramètres dans les prédicats. Il remplace les paramètres d'espace réservé par des valeurs de mots clés réelles.
Cette approche permet une recherche efficace de plusieurs mots-clés dans une seule requête, réduisant ainsi le besoin de plusieurs clauses LIKE et simplifiant les instructions SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!