ASP.NET核心剃须刀中的筛选问题

时间:2019-03-04 16:08:56

标签: c# asp.net-core razor-pages razorengine

我是C#ASP.NET剃须刀页面的新手,并且我使用Microsoft Traing中的示例来构建应用程序。当我尝试从电影表中搜索“ Godzilla”之类的项目时,下面的代码有效。问题在于,如果Itry在“ Godzilla”,“ GhostBusters”和“ Kazzoky”上进行搜索,则返回null。

因此,如果searchString是“ Godzilla”,则当我将“ Godzilla,Kazzoky,Ghostbusters”作为searchString传递时,我得到的结果与“ Kazzoky”和“ Ghostbusters” biut相同,结果是空白页。

请帮助!

public async Task OnGetAsync()
{
    var movies = from m in _context.Movie
                 select m;
    if (!string.IsNullOrEmpty(SearchString))
    {
        movies = movies.Where(s => s.Title.Contains(SearchString));
    }

    Movie = await movies.ToListAsync();
}

我尝试过

parts = parts.Where(s => searchString.Contains(s.Title)); //努力工作

我也尝试过 电影=电影.where(s => s.Title.Contains(Where(s => SearchString.Contains(s.Title))));

但是它抛出了异常...

3 个答案:

答案 0 :(得分:0)

尝试这个。

movies = movies.Where(s => SearchString.Contains(s.Title));

答案 1 :(得分:0)

如果您的搜索用逗号分隔,则需要将其拆分:

var searchTerms = SearchString.Split(',');

movies = movies.Where(s => searchTerms.Contain(s.Title));

答案 2 :(得分:0)

感谢大家的投入。我已经解决了问题。

电影=电影。哪里(s => SearchString.Contains(s.Title));

但是我正在针对错误的数据集进行测试。例如,对“ Gho”进行一次搜索将返回“捉鬼敢死队”,但这很好,当您只想搜索部分标题时,因为您可能记不清了。

我正在做这个假设,这就是为什么我遇到这个问题。

非常感谢大家的贡献。