Pour un site Web, nous utilisons LINQ to Entities. J'ai été chargé d'ajouter des fonctionnalités de recherche sur le site. J'essaie de trouver le moyen le plus élégant de rechercher plusieurs mots-clés (utilisateur entré) sur un seul champ dans la base de données. Permettez-moi de donner un exemple.LINQ to Entities Recherche de propriétés textuelles pour plusieurs mots clés
colonnes de la table:
Name, Description
Exemple ligne:
"Cookie monster", "Fluffy, likes cookies and blue"
Recherche d'utilisateur (delimiter n'a pas d'importance):
"blue fluffy"
Actuellement, je me sers de ce qui suit:
public List<SesameCharacters> SearchByKeywords(string keywords)
{
List<SesameCharacters> output = new List<SesameCharacters>();
string[] k = keywords.ToLower().Split(' ');
using (SesameStreet_Entities entities = new SesameStreet_Entities())
{
IQueryable<SesameCharacters> filter = entities.SesameCharacters;
foreach (string keyword in k)
filter = ForceFilter(filter, keyword);
output = filter.ToList();
}
return output;
}
private IQueryable<SesameCharacters> ForceFilter(IQueryable<SesameCharacters> filter, string keyword)
{
return filter.Where(p => p.Description.ToLower().Contains(keyword));
}
Cela fonctionne actuellement comme prévu mais j'imagine que ce n'est pas la meilleure solution au problème. Suis-je en train de manquer quelque chose d'évident?
REMARQUE: Ceci correspond à AND
correspondant.
bizarre, une réponse était ici, j'ai voté vers le haut, puis parce que je pensais que c'était mal, puis je suis allé voter pour le sauvegarder parce que c'était juste, maintenant c'est parti. – jfar
Oui, il y avait une réponse de casperOne mais quelqu'un doit l'avoir développé. Il a suggéré d'utiliser un proc stocké, ce qui est ce qui penche vers maintenant. –
Je suis dans la même situation ... Avez-vous trouvé une solution avec LinqToEntities, ou avez-vous fini par utiliser une procédure stockée? – Kjensen