【问题标题】:Problems with filtering in ASP.NET core razorASP.NET core razor 中的过滤问题
【发布时间】:2019-03-04 16:08:55
【问题描述】:

我是 c# ASP.NET 剃须刀页面的新手,我正在使用 Microsoft 培训中的示例来构建应用程序。当我尝试从电影表中搜索“哥斯拉”之类的项目时,下面的代码有效。问题是,如果尝试搜索“Godzilla”、“GhostBusters”和“Kazzoky”,它会返回 null。

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

请帮忙!!

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


【解决方案1】:

试试这个。

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

【讨论】:

  • 我已经尝试过了,但它没有用,我只是省略了它,所以我不会引起太多混乱。谢谢
  • 我也试过 movies = movies.Where(s => s.Titke.Contains(Where(s=>SearchString.Contains(s.Title))));但它抛出异常......
  • 它应该和SearchString.Contains(s.Title)一起工作我已经做了很多次了。调试您的代码并查看搜索字符串是否正确。还要检查数据库中是否有正确的记录。
  • 这有点像尝试对查询中的特定字段运行子查询......
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 2014-11-09
      • 2021-05-04
      • 2020-10-27
      • 2021-07-11
      • 2020-12-10
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多