Проблемы с фильтрацией в бритве ядра ASP.NET - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в c # ASP.NET бритвенных страницах, и я использую пример в Microsoft Traing для создания приложения.Приведенный ниже код работает, когда я пытаюсь найти элемент типа «Годзилла» из таблицы фильмов.Проблема в том, что если поиск по «Godzilla», «GhostBusters» и «Kazzoky» будет возвращен null.

, так что если searchString равен «Godzilla», я получаю результат и то же самое для «Kazzoky» и «Охотники за привидениями "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 = movies.Where (s => s.Title.Contains (Where (s => SearchString.Contains (s.Title))));

но бросил и исключение ...

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Если ваш поиск разделен запятыми, вам нужно разделить его:

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

movies = movies.Where(s => searchTerms.Contain(s.Title));
0 голосов
/ 04 марта 2019

Спасибо всем за ваш вклад.Я решил проблему.

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

Но я проверял его на предмет неправильного набора данных.Например, одиночный поиск по «Gho» вернет охотников за привидениями, но это хорошо, если вы хотите искать только часть заголовка, потому что вы не можете запомнить полностью.

Я делал это предположение, и именно поэтому у меня была эта проблема.

Спасибо всем за ваш вклад, я очень ценю.

0 голосов
/ 04 марта 2019

Попробуйте с этим.

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

...