对于我正在做的网站,我们正在使用 LINQ to Entities。我负责向网站添加搜索功能。我试图找出在数据库中的单个字段上搜索多个关键字(用户输入)的最优雅的方法。请允许我举个例子。
表列:
Name, Description
示例行:
"Cookie monster", "Fluffy, likes cookies and blue"
用户搜索(分隔符无关紧要):
"blue fluffy"
目前我正在使用以下内容:
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));
}
这目前按预期工作,但我认为这不是解决问题的最佳方法。我错过了一些明显的东西吗?
注意:这是AND
匹配的。