Во-первых, я бы рекомендовал вам переместить o ут в condition statement
в отдельный метод, потому что это сделает код более читаемым при использовании Linq:
private bool UserNameContains(<your user name> user, string searchFor)
{
return user.FirstName.IndexOf(searchFor, StringComparision.OrdinalIgnoreCase) != -1 ||
user.LastName.IndexOf(searchFor, StringComparision.OrdinalIgnoreCase) != -1;
}
Обратите внимание, что я использую IndexOf(...) != -1
. Это связано с тем, что Contains
использует тот же метод внутри, но с аргументом StringComparision.Ordinal
. Предполагая, что вам не нужна обсадка, гораздо лучше использовать IndexOf(..., StringComparision.OrdinalIgnoreCase)
, таким образом вы избежите опускания символов строки и не сможете ввести ошибку в случае, если searchFor
содержит верхний символ.
Тогда все, что вам нужно сделать, это:
userInfoList.AddRange(allUserList.Where(user => this.UserNameContains(user, searchFor));
или если userInfoList
новый пустой список, вы можете переместить всю логику в его объявлении переменной:
var userInfoList = allUserList.Where(user => this.UserNameContains(user, searchFor).ToList();
Заметим, что вы должны добавить using System.Linq;
с использованием директивы, чтобы иметь возможность использовать расширения Linq.
ToLower - это функция, поэтому вам нужны фигурные скобки – WebFreak001
@ WebFreak001 righto – Jonesopolis