ASP.NET核心剃须刀中的过滤问题

问题描述 投票:-1回答:3

我是c#ASP.NET razor页面的新手,我正在使用Microsoft traing中的示例来构建应用程序。当我尝试从电影表中搜索像“哥斯拉”这样的项目时,下面的代码有效。问题是,如果Itry搜索“Godzilla”,“GhostBusters”和“Kazzoky”,它将返回null。

因此,如果searchString是“哥斯拉”,我得到一个结果和“Kazzoky”和“Ghostbusters”biut相同,当我将“Godzilla,Kazzoky,Ghostbusters”作为searchString传递时,结果是一个空白页面。

请帮忙!!

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)); //没有用

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

但它抛出了异常......

c# asp.net-core razor-pages razorengine
3个回答
0
投票

试试这个。

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


0
投票

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

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

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

0
投票

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

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

但我正在针对错误的数据集进行测试。例如,对“Gho”的单个搜索将返回Ghostbusters,但是当您只想搜索标题的一部分时,这很好,因为您无法完全记住。

我正在做这个假设,这就是我遇到这个问题的原因。

感谢大家的贡献,我真的很感激。

© www.soinside.com 2019 - 2024. All rights reserved.