#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));