Результаты фильтрации запросов Linq

#c# #linq #filter #asp.net-mvc-5

#c# #linq #Фильтр #asp.net-mvc-5

Вопрос:

Я не очень хорошо знаком с LINQ. Вот некоторый код:

 if (!String.IsNullOrEmpty(searchString))
            {
                games = games.Where(x => x.Name.Contains(searchString));
            }
  

Работает так, как должно; однако то, что я хотел бы, вместо того, чтобы фильтровать результаты на основе любого текста, вводимого пользователем, если на вводимых пользователем данных указано «L», есть ли способ в запросе LINQ отфильтровать по 1-м буквам x.Name стихов любой x.Name , содержащий букву.

То есть, скажем, у меня есть…

 League_of_Legends
LOTRO_
Dota_2
Call_of_Duty_4
Final_Fantasy_7
  

И пользователь вводит «L» вместо того, чтобы возвращать все, но Dota 2 может ли он возвращать только League of Legends и LOTRO , поскольку они единственные, чьи имена на самом деле начинаются с «L».

Я предполагаю, что это что-то вроде… games = games.Where(x => x.Name.Contains<***something***>(searchString));

Спасибо!

Ответ №1:

Я предполагаю, что вы ищете StartsWith . Обратите внимание, что это будет работать для любого префикса, а не только для одной буквы.

 games = games.Where(x => x.Name.StartsWith(searchString));
  

Если вам нужен поиск без учета регистра (например, там, где l совпадают и строчные League_of_Legends буквы), используйте:

 games = games.Where(x => x.Name.StartsWith(searchString, StringComparison.CurrentCultureIgnoreCase));