我正在尝试使用 EF 5 将多个搜索条件应用于结果集(在本例中,用于图书馆目录搜索)。以下是相关代码:
public IQueryable<LibraryResource> GetSearchResults(string SearchCriteria, int? limit = null)
{
List<string> criteria = SearchCriteria.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
IQueryable<LibraryResource> allResults = context.LibraryResources.Include("Type").Where(r => r.AuditInfo.DeletedAt == null);
foreach (string criterion in criteria)
{
allResults = allResults.Where(r => (r.Title.Contains(criterion) || r.Keywords.Contains(criterion) || r.Author.Contains(criterion) || r.Comments.Contains(criterion)));
}
allResults = allResults.OrderBy(r => r.Title);
if (limit.HasValue) allResults = allResults.Take(limit.Value);
return allResults;
}
示例 SearchCriteria = "历史时代"
出于某种原因,只有最后一个标准被应用。例如,在上面的示例中,所有在标题、作者、关键字和评论中带有“时代”的书籍都被返回,而没有按“历史”进行过滤。我单步执行了代码,循环执行了两次,每次都使用适当的标准。你能看到我看不到的东西吗?谢谢!