小编Tom*_*ney的帖子

Linq过滤结果包含多个Where子句

我正在尝试使用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;
    }
Run Code Online (Sandbox Code Playgroud)

样本SearchCriteria ="历史时代"

出于某种原因,只应用最后一个标准.例如,在上面的示例中,返回标题,作者,关键字和注释中具有"时代"的所有书籍,而不会过滤"历史".我逐步完成了代码,循环执行了两次,每次都有适当的标准.你能看到我不能的东西吗?谢谢!

c# linq

3
推荐指数
1
解决办法
789
查看次数

标签 统计

c# ×1

linq ×1