Я пытаюсь отфильтровать список пользователей из моей базы данных.LINQ to Entities - коллекция объектов parse/filter
Когда я запускаю эту команду LINQ to Entity, она работает так, как я надеялся. Она возвращает всех пользователей, фильтруется все, что в txtFilterBy_UserName
:
(. Обратите внимание, что я доступ к таблице БД непосредственно Есть также несколько полей для фильтрации, но я включил только имя пользователя в этом примере)
users = db.Users
.Where(u => u.IsActive == true &&
u.UserName.ToLower()
.Contains((txtFilterBy_UserName.Value.Length > 0) ?
u.UserName.ToLower() :
txtFilterBy_UserName.Value.ToLower()))
.ToList();
... Но в некоторых случаях я уже заселена мою коллекцию пользователя (_users
) перед фильтрацией, и я ожидал, чтобы быть в состоянии сделать это:
users = _users.Where(u => u.IsActive == true &&
u.UserName.ToLower()
.Contains((txtFilterBy_UserName.Value.Length > 0) ?
u.UserName.ToLower() :
txtFilterBy_UserName.Value.ToLower()))
.ToList();
Но этот метод всегда возвращает 0 пользователей, кто может сказать меня, что я неправильно, или почему этот метод фильтрации пользовательской коллекции не работает?
Скажем, у моей БД есть 100 пользователей, а у 6 из этих пользователей есть символы «john» в их имени пользователя. Когда я напрямую обращаюсь к БД - я возвращаю 6 пользователей. Если объект коллекции пользователей уже заполнен (со 100 пользователями), и я пытаюсь фильтровать коллекцию - 0 пользователей не возвращается
Большое спасибо за это решение - я был так отчаянн, чтобы попытаться заставить его работать с таким минимальным кодом, но это имеет больше смысла, и это работает! – wotney